Обработка пустых массивов с помощью foreach - PullRequest
2 голосов
/ 20 июля 2011
$foo = '';

foreach((array)$foo as $f){
  echo 'xxx';
}

Будет по-прежнему выводить 'xxx' ...

Ответы [ 6 ]

10 голосов
/ 20 июля 2011

(array)$foo:

Это не пустой массив, а массив, который содержит пустой элемент.

3 голосов
/ 20 июля 2011

Да, будет выведено «XXX», потому что строковая переменная $foo = '', преобразованная в массив, станет:

array(
    0 => ''
)
2 голосов
/ 20 июля 2011

Прежде всего, вы не создаете пустой массив путем приведения типа следующего оператора.Приведенный ниже код фактически создает массив с пустой строкой в ​​первом элементе.

$foo = '';
(array)$foo;

Итак, правильный способ создания пустого массива -

$foo = array();
foreach($foo as $f){
   echo 'xxx';
}

Надеюсь, этопомогает тебе ...

1 голос
/ 20 июля 2011

Я всегда проверяю тип и содержание перед выполнением foreach. Э.Г.

if( is_array($foo) && sizeof($foo) <> 0)
{
 // do foreach
}
1 голос
/ 20 июля 2011
if(!empty($foo))
    foreach((array)$foo as $f)
    {
      echo 'xxx';
    }
0 голосов
/ 20 июля 2011

Приведение пустой строки к массиву не приведет к пустому массиву.Он создаст массив с пустой строкой в ​​качестве элемента:

array(
    0 => ''
)

Вы можете проверить, является ли это допустимым массивом:

if(is_array($foo))
{
    foreach($foo as $f)
    {
        echo 'xxx';
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...