foreach循环中的PHP'非法字符串偏移'

时间:2013-09-24 15:22:33

标签: php arrays class oop foreach

我使用PDO从MySQL数据库获取一个关联数组。

我想通过使用以下代码对其执行一个函数来减少单词数:

$newsContent = Words::truncateWords($rows);

我收到此错误且该功能无效

  

警告:C:\ www \ mvc \ libs \ Words.php中的非法字符串偏移'内容'在线   14

     

注意:未初始化的字符串偏移量:C:\ www \ mvc \ libs \ Words.php中为0   第14行

     

警告:C:\ www \ mvc \ libs \ Words.php中的非法字符串偏移'内容'   第14行

第一个错误重复约8次。第14行指向此行

$rows[$key]['content'] = self::trunc($row['content'], 60);

这是我的Words课程

class Words {

    // truncate each of the news item's content to a set number of words
    public static function truncateWords($rows) {

        // loop through the array 
        foreach($rows as $key => $row) {
            // and truncate content to 60 words
            $rows[$key]['content'] = self::trunc($row['content'], 60);
        }

        return $rows;
    }

    public function trunc($phrase, $max_words)
    {
        $phrase_array = explode(' ',$phrase);

        if(count($phrase_array) > $max_words && $max_words > 0)
            $phrase = implode(' ',array_slice($phrase_array, 0, $max_words)).'...';

        return $phrase;
    }
}

1 个答案:

答案 0 :(得分:2)

这是因为内容不是$row的下标首先检查并查看是否。

array_key_exists检查变量是否已设置,但不检查该变量是否为空

if(array_key_exists('content', $row) {
   self::trunc($row['content'], 60);
}

要检查下标是否存在且不为空,请使用isset