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 回答