$foo = '';
foreach((array)$foo as $f){
echo 'xxx';
}
仍会输出'xxx'...
答案 0 :(得分:10)
(array)$foo
:
这不是空数组,而是包含空元素的数组。
答案 1 :(得分:3)
是的,它会输出'XXX',因为转换为数组的字符串变量$foo = ''
将变为:
array(
0 => ''
)
答案 2 :(得分:2)
首先,您不是通过类型转换以下语句来创建空数组。下面的代码实际上会产生一个在其第一个元素中带有空字符串的数组。
$foo = '';
(array)$foo;
因此,创建空数组的正确方法是
$foo = array();
foreach($foo as $f){
echo 'xxx';
}
希望,这有助于你......
答案 3 :(得分:1)
if(!empty($foo))
foreach((array)$foo as $f)
{
echo 'xxx';
}
答案 4 :(得分:1)
在执行foreach之前,我总是检查类型和内容。 E.g。
if( is_array($foo) && sizeof($foo) <> 0)
{
// do foreach
}
答案 5 :(得分:-3)
将空字符串转换为数组不会导致空数组。它将创建一个带有空字符串的数组作为项目:
array(
0 => ''
)
您可以检查它是否是有效数组:
if(is_array($foo))
{
foreach($foo as $f)
{
echo 'xxx';
}
}