1

私は、array_uniqueを使用して、入力している検索結果から重複を削除しようとしています。ただし、未定義のオフセットエラーが発生します。このエラーの原因と、それを修正するために何ができるかを誰かが知っているかどうか疑問に思いました。以下に示すように、2つの異なる場所から検索結果を入力し、すべての一致を1つの配列にマージしようとしています。

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 に答える