Lo que siempre trato de evitar cuando estoy programando es el uso de IF. Encuentro que siempre hay una alternativa más corta o más inteligente.
Es por eso que publicaré los casos en los que reemplazo el uso de IF. En este caso foreach.
Para evitar problemas en el foreach, una técnica es validar si el tipo de dato es el correspondiente a la operación:
[php]
if(is_array($resultados))
foreach($resultados as $r)
echo $r . "\n";
En cambio, para obtener un código más claro, usamos casting:
[php]
foreach((array)$resultados as $r)
echo $r . "\n";
La segunda solución es más clara y fácil de mantener. Si la variable no fuera un arreglo, no tendríamos el error:
PHP Warning: Invalid argument supplied for foreach() in...
Además si es un arreglo vacío la iteración no se ejecuta.