PHP +独特的数组

时间:2012-04-07 06:41:57

标签: php

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

enter image description here

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

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

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

是否有一种有效的方法对数组进行排序以删除重复项。我想如果我订购了A-Z这样的话 - 重复应该是显而易见的。

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

THX

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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

这将有效地删除您的副本。