Mi capita spesso di gestire dati che possono essere sia un array che una variabile null e di alimentare alcune foreach
con questi dati.
$values = get_values();
foreach ($values as $value){
...
}
Quando si alimenta un foreach con dati che non sono un array, si ottiene un avviso:
Attenzione: Argomento non valido fornito per foreach() in [...]
Supponendo che non sia possibile rifattorizzare la funzione get_values()
per restituire sempre un array (compatibilità all'indietro, codice sorgente non disponibile, qualsiasi altra ragione), mi sto chiedendo quale sia il modo più pulito ed efficiente per evitare questi avvertimenti:
$valori
in array$valori
in arrayforeach
con un if
.Personalmente trovo che questo sia il più pulito - non sono sicuro che sia il più efficiente, mente!
if (is_array($values) || is_object($values))
{
foreach ($values as $value)
{
...
}
}
La ragione della mia preferenza è che non alloca un array vuoto quando non c'è nulla da cui cominciare.
Farei la stessa cosa di Andy, ma userei la funzione 'empty'.
in questo modo:
if(empty($yourArray))
{echo"<p>There's nothing in the array.....</p>";}
else
{
foreach ($yourArray as $current_array_item)
{
//do something with the current array item here
}
}