1

一般的に、エラー メッセージの意味は理解できたと思います。でも、私の場合は、解けなかったなぞなぞ…。

    $keywords_all = array();
    $count = 0;

    for ($z = 0; $z < $num_results; $z++)
    {
        $keywords_array = explode(",", $row['free_keywords']);

        for ($i = 0; $i < count($keywords_array); $i++)
        {
            if (in_array(strtolower(trim($keywords_array[$i])), $keywords_all))
            {
                $count++;
            }
            else
            {
                echo "<br />".$keywords_array[$i];
                $keywords_all[$count] = $keywords_array[$i];
            }
        }

        $row = pg_fetch_array($result);
    }

それで、それの何が問題なのですか?エラーメッセージが行にポップアップ表示されます

    $keywords_all[$count] = $keywords_array[$i];

私には手がかりがありません、私には大丈夫のようです。しかし、それはまた、私が無視した非常に小さなことだと思います...ヒントをありがとう!

4

2 に答える 2

1

エラー メッセージを再現できませんでした。ただし、コードにバグが見つかりました (すべてのキーワードを重複なしで $keywords_all 配列に入れていると仮定しています)。したがって、IF 内で $count をインクリメントするのではなく、代わりに $keywords_all カウントを更新する必要があります。下記参照:

if (in_array(strtolower(trim($keywords_array[$i])), $keywords_all)) {
    $count = count($keywords_all);
} else {
    echo "<br />".$keywords_array[$i];
    $keywords_all[$count] = $keywords_array[$i];
    $count++;
}

$keywords_all 配列に値を保存した後、$count をインクリメントします。

于 2012-12-06T13:50:03.787 に答える
0
    $keywords_all = array();
    $count = 0; // what for you neet this var ?

    $myRow = 'keyW1,keyW2,keyW3,keyW2';

//    for ($z = 0; $z < $num_results; $z++) // there is no variable $num_results at your code so I've replaced it with constant
    for ($z = 0; $z < 1; $z++)
    {
//        $keywords_array = explode(",", $row['free_keywords']); 
        $keywords_array = explode(",", $myRow);

//        for ($i = 0; $i < count($keywords_array); $i++)
        foreach ($keywords_array as $keyword)
        {

            $keyword = strtolower( trim( $keyword ) ); // some syntax sugar would be nice

            if ( !in_array( $keyword, $keywords_all) )
            {
                echo "<br />".$keyword;

                $keywords_all[] = $keyword;

            }
        }

//        $row = pg_fetch_array($result);
    }

    var_dump($keywords_all);

このコードはあなたにとってより良いと思いますが、重複したレコードを取り除きたいだけなら

array_uniq( array("1", "1", "2", "1") ) 

あなたにとってより良い解決策になるでしょう。

于 2012-12-06T13:15:48.313 に答える