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; } } Quote 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; Quote 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? Quote 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. Quote Link to comment https://forums.phpfreaks.com/topic/282423-illegal-string-offset-in-foreach-loop/#findComment-1451088 Share on other sites More sharing options...
Solution AdRock Posted September 24, 2013 Author Solution Share Posted September 24, 2013 Thanks guys...sorted it Quote 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? Quote 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
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.