PHP foreach数组两次导致一些警告未定义索引

时间:2016-06-21 09:31:27

标签: php arrays loops foreach

我有以下php代码在mysql查询结果中查找测试条目的最后一个条目。

它检查最后一个条目是否对设备有效,或者它是否尝试搜索该类型测试中的最新条目(或者未将其保留为未经测试)。之后,它以相同的方式对第二个设备执行相同的操作。但是我在第二个foreach循环中遇到指向行的错误。

  if ($device1_valid) {
$Results_d1 = $History[$TestNo][$iter]['Results_d1'];
$Colour_d1 = Colour($Results_d1);
$Date_d1    = $History[$TestNo][$iter]['Date_'];
  } else {
  foreach ($History[$TestNo]['iter'] as $item) {
       $device1_valid = $History[$TestNo][$item]['d1_valid'];
       if ($sf1_valid) {
         $Results_d1 = $History[$TestNo][$item]['Results_d1'];
         $Colour_d1 = Colour($Results_d1);
         $Date_d1    = $History[$TestNo][$item]['Date_'];
         break;
        } else {
        $Results_d1 = "----";
        $DateTime_d1 ="----";
        $Colour_d1 = 'white';
        }
      }
  }
  unset($item);


  if ($device2_valid) {
$Results_d2 = $History[$TestNo][$iter]['Results_d2'];
$Colour_d2 = Colour($Results_d2);
$Results_d2 = $History[$TestNo][$iter]['Results_d2'];
$Date_d2    = $History[$TestNo][$iter]['Date_'];
   } else {
  foreach ($History[$TestNo]['EntryNo'] as $item) {
       $device2_valid = $History[$TestNo][$item]['d2_valid'];
       if ($device2_valid) {
         $Results_d2 = $History[$TestNo][$item]['Results_d2'];
         $Colour_d2 = Colour($Results_d2);
         $Date_d2    = $History[$TestNo][$item]['Date_'];
         break;
        } else {
        $Results_d2 = "----";
        $DateTime_d2 ="----";
        $Colour_d2 = 'white';
        }
      }

这会导致第二个循环的警告:

Notice: Undefined index: EntryNo in /server/filename.php on line 129
Warning: Invalid argument supplied for foreach() in /server/filename.php on line 129

为什么会发生此错误以及如何将其删除?查询确实产生了正确的数据(稍后会显示但我不明白为什么会发生这些通知和警告。这只发生在第二个foreach循环而不是第一个。

编辑:

$History[$TestNo]是一个多维数组....所以vardump给出了array(49) { [0]=> array(25) {....} [1]=> array(25) [2]=> array(25){...}等等。我把这个函数设置为$ EntryNo为0.

vardump $History[$TestNo][$EntryNo]只提供array(25) {....}

第一个循环中没有警告,但第二个循环表示索引未定义。这是确定为重复的其他问题未解决我的问题的关键原因。问题是为什么在第二个foreach循环中出现这种情况,我该如何避免这种情况。

1 个答案:

答案 0 :(得分:2)

有关 `注意:未定义索引:第129行/server/filename.php中的EntryNo 警告:在第129行的#server/filename.php中为foreach()提供的参数无效'

foreach($History[$TestNo]['EntryNo'] as $item)必须是这样的。数组$History[$TestNo]中没有带有键EntryNo的元素。 请问var_dump($ History [$ TestNo])并检查一下吗?

Notice: Undefined variable: Colour_sf2 in /server/filename.php on line 184 为此,您没有在此处包含足够的代码,但必须是因为在任何函数或条件中使用它之前尚未定义$Colour_sf2