Fixing the "invalid argument supplied for foreach()" PHP error
The "invalid argument supplied for foreach()" error occurs when PHP’s built-in foreach() tries to iterate over a data structure that is not recognized as an array or object.
Consider the code snippet below:
<?phpfunction getList () {// Assume some error occurs here and instead of// a list/array, a boolean FALSE is returned.return false;}// Get the array from a function call.$myList = getList();//Loop through the $myList array.foreach($myList as $arrayItem){//Do something.}?>
The error occurred because the getList() function returned a boolean value instead of an array. The foreach() command can only iterate over arrays or objects.
To resolve this error, perform a check before the foreach() function so that the error can be circumvented. This solution is shown in the code below:
<?phpfunction getList () {// Assume some error occurs here and instead of// a list/array, a boolean FALSE is returned.return false;}// Get the array from a function call.$myList = getList();// Check if $myList is indeed an array or an object.if (is_array($myList) || is_object($myList)){// If yes, then foreach() will iterate over it.foreach($myList as $arrayItem){//Do something.}}else // If $myList was not an array, then this block is executed.{echo "Unfortunately, an error occured.";}?>
Free Resources
Copyright ©2025 Educative, Inc. All rights reserved