2016-06-21 24 views
0

我有以下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循環中發生這種情況,以及如何避免這種情況。

+1

[PHP:「Notice:Undefined variable」和「Notice:Undefined index」]的可能重複(http://stackoverflow.com/questions/4261133/php-notice-undefined-variable-and-notice-undefined-索引) – Epodax

+0

我不明白如果沒有設置EntryNo,那麼爲什麼錯誤不會發生在第一個foreach循環。 – Umar

回答

2

對於 `說明:未定義指數:EntryNo在/server/filename.php線129 警告:()在/server/filename.php提供的foreach無效參數在線路129'

它必須像這樣在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

+0

爲什麼這不會發生在第一個foreach循環中? – Umar

+0

執行循環'$ History [$ TestNo] ['EntryNo']'必須是數組並存在。 你能檢查一下嗎? 如果它不存在,則需要更改整個代碼。 –

+0

是的,這是正確的。 – purvik7373