我一直在尝试使用array_unique从我填充的搜索结果中删除重复项。但是,我得到一个未定义的偏移错误。我想知道是否有人知道导致此错误的原因以及我可以做些什么来解决它?如下所示,我将从两个不同的位置填充搜索结果,并尝试将所有匹配合并为一个数组。
在array_unique之前: 数组([0] => Bob Marley Footwear [1] => Bob Marley Footwear [2] => DVS Shoe Co.)
在array_unique之后: Array([0] => Bob Marley Footwear [2] => DVS Shoe Co。)
注意:这会导致在迭代数组时尝试访问数组插槽1时出现错误消息,以打印出结果。
$results = mysql_query("SELECT keywords,name FROM files WHERE MATCH (keywords,name) AGAINST ('$searchfor')") or die(mysql_error());
$matches=Array();
$matches_final=Array();
while($row = mysql_fetch_array($results)){
$matches[] = $row['name'];
}
$matches_final = array_unique($matches);
$results1 = mysql_query("SELECT name FROM files");
while($row1 = mysql_fetch_array($results1)){
$temp = explode(" ", $row1['name']);
for($z=0; $z < sizeof($search_words); $z++){
for($i=0; $i < sizeof($temp); $i++){
if(((strcmp(strtolower($search_words[$z]), strtolower($temp[$i])))==0) and strlen($search_words[$z])<=5){
$matches_final[] = $row1['name'];
}
}
}
}
return $matches_final;
答案 0 :(得分:4)
我们首先建议您在查询中使用DISTINCT(name)
,以消除对array_unique
的需求。
错误是由于array_unique删除了一个元素而没有重新键入数组。您可以在将数组返回到重新生成密钥之前对其执行array_values
。