通常會出現未定義的索引問題是由於數組沒有這個值造成的,數組分為關聯數組和索引數組,索引數組是數字下標;關聯數組是鍵值下標。
$POST['id']之所以報未定義索引是因為$POST這個陣列裡沒有包含下標鍵值為id的值。 (建議學習:PHP影片教學)
解決方法:
判斷陣列中是否包含下標鍵值為id的值,如果沒有,則回傳錯誤訊息,如何判斷呢,最簡單的方法就是用函數isset來判斷,如isset($POST['id']),存在則傳回true,反之則為false;
#。三元判斷法,不存在給一個預設的數值, 如$POST['id'] = isset($POST['id'])?$POST['id']:"1"; #當您(或PHP)嘗試存取陣列的未定義索引時,會出現此通知。
處理問題的方法:
在存取索引之前檢查索引是否存在。為此您可以使用isset()或array_key_exists():
//isset()$value = isset($array['my_index']) ? $array['my_index'] : ''; //array_key_exists()$value = array_key_exists('my_index', $array) ? $array['my_index'] : '';語言建構list()在嘗試存取不存在的陣列索引時可能會產生此內容:
list($a, $b) = array(0 => 'a');//orlist($one, $two) = explode(',', 'test string');兩個變量用於存取兩個陣列元素,但是只有一個陣列元素index 0,因此這將產生:注意:未定義的偏移量:1########$_POST/ $ _GET/ $_SESSION可變#########使用時$_POST,上面的注意事項經常出現,$_GET或$_SESSION。 ######對您而言$_POST,$_GET您只需在使用之前檢查索引是否存在。因為$_SESSION您必須確保以會話開始session_start()並且索引也存在。 ###
以上是php的未定義索引如何解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!