我正在尝试打印一个数组,直到它为空。这是我的代码:
for ($i=0; $array[0][$i]!=NULL; ++$i){
echo $array[0][$i];
}
然而,它看起来像是多做了一次回声,我不知道为什么?这是我对一个数组的输出,该数组包含到数组[0][2]的数据。我确信数组[0][3]是空的,我用if(array[0][3]==NULL)
尝试过
Test 0
Test 1
Test 2
( ! ) Notice: Undefined offset: 3 in C:'... on line 9
知道吗?
循环时应该使用数组长度。。。或者试试这个:
foreach($array[0] as $val) {
echo $val;
}
这真的很有道理。PHP不能神奇地知道下一个id(在您的示例中,索引号"3")没有设置,它必须访问变量才能确定。这也是你收到通知的原因。
简而言之,它不执行for循环的主体,但必须执行测试来确定是否继续。
无论如何,使用foreach
循环,或者先计算数组中的项数,然后递增$i
,直到它们匹配为止。
实际工作的代码的可能替代方案。
foreach($array[0] as $val)
if($val===null)
break;
else
echo $val;
或
$arrlen=count($array[0]);
for($i=0;$i<$arrlen;$i++)
if($array[0][$i]===null)
break;
else
echo $array[0][$i];
甚至
$i=0;
while($array[0][$i]!==null) { //not recommended, can cause infinite loop
echo $array[0][$i];
$i++;
}
它抛出错误的原因是因为不存在的数组索引不等于NULL。您可以将代码修改为:
for ($i=0; isset($array[0][$i]); ++$i){
echo $array[0][$i];
}
或者试试这个:
$ctr = count($array[0]);
for ($i = 0; $i < $ctr; $i++) {
echo $array[0][$i];
}
循环应在到达数组末尾后结束。