Het gebeurt me vaak dat ik gegevens moet verwerken die zowel een array als een null variabele kunnen zijn en dat ik een foreach
moet voeden met deze gegevens.
$values = get_values();
foreach ($values as $value){
...
}
Wanneer je een foreach voedt met gegevens die geen array zijn, krijg je een waarschuwing:
Waarschuwing: Ongeldig argument geleverd voor foreach() in [...]
Ervan uitgaande dat het's niet mogelijk is om de get_values()
functie te refactoren om altijd een array terug te geven (achterwaartse compatibiliteit, geen beschikbare broncode, wat voor andere reden dan ook), vraag ik me af wat de schoonste en meest efficiënte manier is om deze waarschuwingen te vermijden:
$values
naar array$values
to arrayforeach
met een if
Persoonlijk vind ik dit het schoonst - niet zeker of het ook het efficiëntst is, hoor!
if (is_array($values) || is_object($values))
{
foreach ($values as $value)
{
...
}
}
De reden voor mijn voorkeur is dat het geen lege array toewijst als je toch al niets hebt om mee te beginnen.
Ik zou hetzelfde doen als Andy, maar ik zou de 'empty' functie gebruiken.
zo:
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
}
}