我有以下php代碼,它正在查找mysql查詢結果中測試條目的最後一個條目。PHP foreach通過數組兩次導致一些警告undefined index
它檢查最後一個條目是否對某個設備有效,或者它試圖在該類型的測試中搜索最新的條目(或者失敗時將其保留爲未測試)。之後,它以相同的方式爲第二個設備執行相同的操作。但是,我得到的錯誤指向第二個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循環中發生這種情況,以及如何避免這種情況。
[PHP:「Notice:Undefined variable」和「Notice:Undefined index」]的可能重複(http://stackoverflow.com/questions/4261133/php-notice-undefined-variable-and-notice-undefined-索引) – Epodax
我不明白如果沒有設置EntryNo,那麼爲什麼錯誤不會發生在第一個foreach循環。 – Umar