我是一个表或位置和用户查询,以找到位置。我遇到的问题是一些位置是重复的 - 下面是一个例子(注意:有时结果集可能是几千条记录):
在这里你可以看到: 吉隆坡,维多利亚州 维多利亚州北吉朗
我可以将每个位置的所有单词(没有逗号)加载到数组中 - 例如:
array[0] - Geelong North Victoria
array[1] - North Geelong Victoria
是否有一种有效的方法对数组进行排序以删除重复项。我想如果我订购了A-Z这样的话 - 重复应该是显而易见的。
任何人都对如何最好地解决这个问题有任何建议。我可以想出一个解决方案(有点像我上面解释的那样,但可能有更好的方法来完成这个)。
THX
答案 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
这将有效地删除您的副本。