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