Php 使用foreach处理空数组

Php 使用foreach处理空数组,php,arrays,foreach,Php,Arrays,Foreach,仍将输出“xxx”…将空字符串强制转换为数组不会导致空数组。它将创建一个以空字符串作为项的数组: $foo = ''; foreach((array)$foo as $f){ echo 'xxx'; } if(is_array($foo)) { foreach($foo as $f) { echo 'xxx'; } } 您可以检查它是否为有效数组: array( 0 => '' ) (数组)$foo: 这不是空数组,而是包含空元素

仍将输出“xxx”…

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

$foo = '';

foreach((array)$foo as $f){
  echo 'xxx';
}
if(is_array($foo))
{
    foreach($foo as $f)
    {
        echo 'xxx';
    }
}
您可以检查它是否为有效数组:

array(
    0 => ''
)
(数组)$foo


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

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


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

if(!empty($foo))
    foreach((array)$foo as $f)
    {
      echo 'xxx';
    }
if(is_数组($foo)和&sizeof($foo)0)
{
//做foreach
}

首先,不能通过类型转换以下语句来创建空数组。下面的代码实际上会生成一个数组,其第一个元素中有一个空字符串

if( is_array($foo) && sizeof($foo) <> 0)
{
 // do foreach
}
因此,创建空数组的正确方法是

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

希望,这有助于您……

您是否尝试过
$foo=array()而不是空字符串?因为(数组)$foo创建了一个包含一个空字符串项的数组-$foo=array(“”),确切地说:
array(1){[0]=>string(0)”}
不需要,强制转换就足够了!你一定看到了另一个答案…唯一需要检查的可能是空,但不是检查它是否是数组。请看@Subdigger的(正确)答案。我认为他的答案不正确,因为$foo='awesome'不是空的,也不是数组@马丁回答了一些问题,至少应该是清楚的。但是当有人问这样的问题时,他告诉我你知道我有一个计算器,我试过2+1,得到了3作为答案。唯一正确的答案是告诉他他做错了什么;“这会是个问题。”马丁·比德,我想不会。因为(数组)$foo。因为我不是我的代码。我不在乎是否有人不检查他的数组是否为数组。问题是将仍然输出“xxx”。。。给定的代码解决了这个问题$var=(数组)'string';将返回包含元素“string”的数组。在那个特殊的例外中,你们是对的,但我总是在循环之前检查它是否是一个数组。@Martin Bieder so和我。但那个人希望这是一根绳子。看这个问题,你看不懂他的描述。他只是描述了一般情况。
$foo = '';
(array)$foo;
$foo = array();
foreach($foo as $f){
   echo 'xxx';
}