用foreach处理空数组


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

仍然会输出'xxx'…

(array)$foo:

这不是一个空数组,而是一个包含空元素的数组。

是的,它将输出'XXX',因为字符串变量$foo = ''转换为数组将变成:

array(
    0 => ''
)

首先,通过类型强制转换下面的语句,您不是在创建一个空数组。下面的代码实际上会生成一个第一个元素为空字符串的数组。

$foo = '';
(array)$foo;
因此,创建空数组的正确方法是
$foo = array();
foreach($foo as $f){
   echo 'xxx';
}

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

在执行foreach之前,我总是检查类型和内容。例如

if( is_array($foo) && sizeof($foo) <> 0)
{
 // do foreach
}

将空字符串强制转换为数组不会导致空数组。它将创建一个以空字符串作为项的数组:

array(
    0 => ''
)

你可以检查它是否是一个有效的数组:

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

最新更新