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:
- Casting
$values
to array - Initializing
$values
to array - Wrapping the
foreach
with anif
- Other (please suggest)
Advertisement
Answer
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.