我有以下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循环中出现这种情况,我该如何避免这种情况。
答案 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
。