Често ми се случва да обработвам данни, които могат да бъдат или масив, или нулева променлива, и да захранвам някои foreach
с тези данни.
$values = get_values();
foreach ($values as $value){
...
}
Когато захранвате foreach с данни, които не са масив, получавате предупреждение:
Предупреждение: Невалиден аргумент, подаден за foreach() в [...]
Ако приемем, че не е'възможно да се преработи функцията get_values()
, така че винаги да връща масив (обратна съвместимост, липса на изходен код, каквато и да е друга причина), се чудя кой е най-чистият и ефикасен начин да се избегнат тези предупреждения:
$values
в масив$values
в масивforeach
с if
Лично аз смятам, че това е най-чистият начин, но не съм сигурен дали е най-ефективният!
if (is_array($values) || is_object($values))
{
foreach ($values as $value)
{
...
}
}
Причината за моето предпочитание е, че не се заделя празен масив, когато така или иначе няма с какво да се започне.
На първо място, всяка променлива трябва да бъде инициализирана. Винаги.
Заличаването не е опция.
Ако get_values(); може да върне променлива от различен тип, тази стойност трябва да се провери, разбира се.
Бих направил същото нещо като Анди, но бих използвал функцията 'empty'.
по следния начин:
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
}
}