我试图打印一个数组,直到它为空。 这是我的代码:
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
有什么想法吗?
答案 0 :(得分:0)
循环时应该使用数组长度...或者尝试这样做:
foreach($array[0] as $val) {
echo $val;
}
答案 1 :(得分:0)
它抛出错误的原因是因为不存在的数组索引不等于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];
}
循环应在到达数组末尾后完成。
答案 2 :(得分:0)
真的很有道理。 PHP无法神奇地知道下一个id(在你的例子中,索引号&#39; 3&#39;)没有设置,它必须访问变量来确定。这也是你收到通知的原因。
简而言之,它不执行for循环的主体,但它必须执行测试以确定是否继续。
无论如何,使用foreach
循环,或先计算数组中的项目数,然后递增$i
直到它们匹配。
答案 3 :(得分:0)
可能替代您应该实际工作的代码。
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++;
}