Il m'arrive souvent de manipuler des données qui peuvent être soit un tableau soit une variable nulle et d'alimenter un foreach
avec ces données.
$values = get_values();
foreach ($values as $value){
...
}
Lorsque vous alimentez un foreach avec des données qui ne sont pas un tableau, vous obtenez un avertissement :
Avertissement : Invalid argument supplied for foreach() in [...]
En supposant qu’il n’est pas possible de refactoriser la fonction get_values()
pour qu’elle renvoie toujours un tableau (rétrocompatibilité, code source non disponible, ou toute autre raison), je me demande quelle est la manière la plus propre et la plus efficace d’éviter ces avertissements :
$values
en tableau$values
en tableauforeach
avec un if
.Personnellement, je trouve que cette méthode est la plus propre - mais je ne suis pas sûr qu'elle soit la plus efficace !
if (is_array($values) || is_object($values))
{
foreach ($values as $value)
{
...
}
}
La raison de ma préférence est qu’elle n’alloue pas un tableau vide alors que vous n’avez rien pour commencer.
Je ferais la même chose qu'Andy mais j'utiliserais la fonction 'empty' ;.
comme ça :
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
}
}