1

我在一个表或位置和用户查询中找到那里的位置。我遇到的问题是某些位置重复 - 下面是一个示例(注意:有时结果集可能是几千条记录):

在此处输入图像描述

在这里你可以看到: 吉朗北,维多利亚 北吉朗,维多利亚

我可以将每个位置的所有单词(不带逗号)加载到一个数组中 - 例如:

 array[0] - Geelong North Victoria
 array[1] - North Geelong Victoria

那么是否有一种有效的方法对数组进行排序以删除重复项。我想如果我订购了 AZ 这个词 - 重复应该很明显。

任何人都对如何最好地解决这个问题有任何建议。我可以想象一个解决方案(有点像我上面解释的,但可能有更好的方法来完成这个)。

谢谢

4

2 回答 2

1

首先对单词进行排序,然后应用array_unique

$array = array('Geelong North, Victoria', 'North Geelong, Victoria');
function sortloc($s) {
    $d = preg_split("/\W+/", $s, -1, PREG_SPLIT_NO_EMPTY);
    sort($d);
    return implode(' ', $d);
}
$locs = array_map('sortloc', $array);
$locs = array_unique($locs);
于 2012-04-07T07:07:20.253 回答
0

该 array_unique() 有一个函数。
看到这个: http: //fi2.php.net/manual/en/function.array-unique.php

另一种方法是,如果您不需要保留数字,则将该值也作为键,因此:

array["Geelong North Victoria"] - Geelong North Victoria
array["North Geelong Victoria"] - North Geelong Victoria

这肯定会删除你的重复项。

于 2012-04-07T07:12:46.823 回答