AdRock Posted September 24, 2013 Share Posted September 24, 2013 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 More sharing options...
AbraCadaver Posted September 24, 2013 Share Posted September 24, 2013 Don't try and modify $rows in the loop. Try: foreach($rows as &$row) { $row['content'] = self::trunc($row['content'], 60); } return $rows; Link to comment https://forums.phpfreaks.com/topic/282423-illegal-string-offset-in-foreach-loop/#findComment-1451082 Share on other sites More sharing options...
requinix Posted September 24, 2013 Share Posted September 24, 2013 Are you sure that you passed an array of arrays to truncateWords? And not just, say, one single row? Link to comment https://forums.phpfreaks.com/topic/282423-illegal-string-offset-in-foreach-loop/#findComment-1451084 Share on other sites More sharing options...
vinny42 Posted September 24, 2013 Share Posted September 24, 2013 "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. Link to comment https://forums.phpfreaks.com/topic/282423-illegal-string-offset-in-foreach-loop/#findComment-1451088 Share on other sites More sharing options...
AdRock Posted September 24, 2013 Author Share Posted September 24, 2013 Thanks guys...sorted it Link to comment https://forums.phpfreaks.com/topic/282423-illegal-string-offset-in-foreach-loop/#findComment-1451096 Share on other sites More sharing options...
AbraCadaver Posted September 24, 2013 Share Posted September 24, 2013 Thanks guys...sorted it OK, what was it? Link to comment https://forums.phpfreaks.com/topic/282423-illegal-string-offset-in-foreach-loop/#findComment-1451111 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.