It often happens to me to handle data that can be either an array or a null variable and to feed some foreach
with these data.
$values = get_values(); foreach ($values as $value){ ... }
When you feed a foreach with data that are not an array, you get a warning:
Warning: Invalid argument supplied for foreach() in [...]
Assuming it's not possible to refactor the get_values()
function to always return an array (backward compatibility, not available source code, whatever other reason), I'm wondering which is the cleanest and most efficient way to avoid these warnings:
$values
to array$values
to arrayforeach
with an if
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. // a list/array, a boolean FALSE is returned.
The PHP foreach Loop The foreach loop works only on arrays, and is used to loop through each key/value pair in an array.
Personally I find this to be the most clean - not sure if it's the most efficient, mind!
if (is_array($values) || is_object($values)) { foreach ($values as $value) { ... } }
The reason for my preference is it doesn't allocate an empty array when you've got nothing to begin with anyway.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With