1

我一直在尝试使用 array_unique 从我填充的搜索结果中删除重复项。但是,我收到未定义的偏移错误。我想知道是否有人知道导致此错误的原因以及我能做些什么来解决它?正如您在下面看到的,我正在从两个不同的地方填充搜索结果并尝试将所有匹配项合并到一个数组中。

在array_unique 之前:Array([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;
4

1 回答 1

6

我想首先建议您DISTINCT(name)在查询中使用以消除对array_unique.

该错误是由于 array_unique 删除了一个元素而不是重新键入数组。您可以array_values在将阵列返回到重新设置密钥之前对其执行。

于 2012-06-30T23:53:22.227 回答