未定义的偏移量:1 For Loop PHP

时间:2014-03-15 07:39:17

标签: php

它正在获取的数组的大小为2,所以如果我们注释掉$size它返回2,但for循环只打印表列第0位的值而不是第2位的下一个给出错误:

Undefined offset: 1

代码:

$allunstitched="Select p_id from unstitchedproduct";
$resultAllUnstitched= mysqli_query($connection,$allunstitched);
$AllUnstitchedResult= mysqli_fetch_array($resultAllUnstitched);
//$size=count($AllUnstitchedResult);

for ($i=0, $count = count($AllUnstitchedResult); $i < $count; ++$i) {
  print $AllUnstitchedResult[$i];
}

3 个答案:

答案 0 :(得分:1)

你正在使用mysqli_fetch_array。此函数默认返回结果两次:按数字和列名称索引。这里结果集只有一列,所以你在数组中得到它的值两次:首先是索引0,然后是字符串索引。没有索引1。

要仅使用数字索引获取结果,请将MYSQLI_NUM作为第二个参数传递给mysqli_fetch_array:

mysqli_fetch_array($resultAllUnstitched, MYSQLI_NUM);

答案 1 :(得分:0)

如果从0开始,如果count = 5,你将有6个元素(0,1,2,3,4,5),请注意这一点。您需要循环(count-1)次:

 $count = count($AllUnstitchedResult);
 for ($i=0, $i < $count-1; $i++) {
    print $AllUnstitchedResult[$i];
 }

答案 2 :(得分:0)

嗯,我不认为你的for循环有问题;由于您的查询读取 ONE 字段/列,它应该具有 1 迭代(= 0索引),因此 = 1 undefined 是正确的(在我看来)。

你应该做的是一个循环,它反复调用mysqli_fetch_array来获取所有行,如下所示:

while($AllUnstitchedResult = mysqli_fetch_array($resultAllUnstitched,MYSQLI_NUM)) {
   foreach ($AllUnstitchedResult as $field) {
      print $field;
   }
}