2011-05-28 124 views
0

正確,所以我有E_NOTICES和我的代碼工程只是我不斷收到「嚴重性:通知消息:未定義索引:0」每次我嘗試插入我的數據到數組用設定的鍵。當你嘗試調試時,它真的很煩人。PHP數組的使未定義的索引:0通知消失

我做錯了什麼,會使通知消失而不關閉E_NOTICES?

foreach ($bracketmatches->result() as $row) 
{ 
    if(!isset($bracketdata[$row->position])) 
    { 
    $bracketdata[$row->position] = array(); 
    } 
    $bracketdata[$row->position] = array("home_name" => $teams[$row->home_id]['team_name']); 
} 
+0

哪條線,你得到的通知?這是if語句嗎?還是最後的分配線? – Trott 2011-05-28 18:34:00

+0

因爲您設置了'$ bracketdata [$ row-> position]',所以整個if事物看起來多餘。 – cOle2 2011-05-28 18:37:14

+1

整個'if {}'塊是多餘的,因爲你要麼分配一個數組()。你的問題是'$ team [0]'中沒有任何東西。而且我不想讓那個具體的通知「消失」,而是調查爲什麼沒有。 – mario 2011-05-28 18:38:42

回答

2

是否明確定義了$teams[$row->home_id]

編輯:快速和骯髒的測試你:

foreach ($bracketmatches->result() as $row) 
{ 
    if(!isset($teams[$row->home_id])) 
    { 
    die('GOTCHA!!!'); 
    } 
    $bracketdata[$row->position] = array("home_name" => $teams[$row->home_id]['team_name']); 
} 
+0

我不好,我正急着出去看足球,並沒有在數據庫中設置home_id,所以它正在尋找數組鍵0,並且不存在於團隊數據中。感謝骯髒的測試:P有幫助 – Jimmy 2011-05-28 20:57:26

1

無法肯定地說沒有更多的信息,但我會檢查$按行>位置設置,如果有,他們可能是不確定的任何可能性,即按行$> HOME_ID設置。

0

您必須推動值之前初始化基陣。這裏的事情並沒有真正做任何事情。把它扔掉。如果仍然出現錯誤,請確保始終設置爲$teams[$row->home_id]['team_name']

$bracketdata = array(); 
foreach ($bracketmatches->result() as $row) 
{ 
    $bracketdata[$row->position] = array("home_name" => $teams[$row->home_id]['team_name']); 
} 
+0

這個具體的聲明'未定義的索引:0'聽起來不像是初始化數組有沒有什麼關係。 – 2011-05-28 19:05:35

+0

思考它我認爲你是對的。 '$ bracketdata'應該在使用前仍然被初始化。 – runfalk 2011-05-28 21:46:17

0
$bracketdata = array(); 
foreach ($bracketmatches->result() as $row) 
{ 
    if (isset($row->position) && !empty($row->position) && isset($teams[$row->home_id]['team_name'])) 
    $bracketdata[$row->position] = array("home_name" => $teams[$row->home_id]['team_name']); 
}