Php 使用foreach处理空数组
仍将输出“xxx”…将空字符串强制转换为数组不会导致空数组。它将创建一个以空字符串作为项的数组: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: 这不是空数组,而是包含空元素
$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';
}