$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';
}
}