Jump to content

'Illegal string offset' in foreach loop


AdRock

Recommended Posts

I am getting an assoc array from a MySQL database using PDO.

I want to perform a function on it to trim down the number of words by using the following code:

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

I am getting this error and the the function hasn't worked

Warning: Illegal string offset 'content' in C:\www\mvc\libs\Words.php on line 14

Notice: Uninitialized string offset: 0 in C:\www\mvc\libs\Words.php on line 14

Warning: Illegal string offset 'content' in C:\www\mvc\libs\Words.php on line 14

 

 

The first error is repeated about 8 times. Line 14 points to this line

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

Here is my Words class

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;
}
}
Link to comment
https://forums.phpfreaks.com/topic/282423-illegal-string-offset-in-foreach-loop/
Share on other sites

"Warning: Illegal string offset 'content' in C:\www\mvc\libs\Words.php on line 14"

 

 

As requinix suggests and as the error message is trying to tell you: whatever you are trying to get element 'content' from at line 14 is a string, not an array. Strings cannot have an offset of anything other than a number.

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.