0

E_NOTICES をオンにすると、コードが機能し、セット キーを使用して配列にデータを挿入しようとするたびに、「重大度: 通知メッセージ: 未定義のインデックス: 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']);
}
4

4 に答える 4

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']);
}
于 2011-05-28T18:37:39.797 に答える
1

詳細な情報がなければ断言することはできませんが、$row->position が設定されていることと、未定義の可能性がある場合は $row->home_id が設定されていることを確認します。

于 2011-05-28T18:36:13.800 に答える
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']);
}
于 2011-05-28T19:37:40.953 に答える
0

値をプッシュする前に、基本配列を初期化する必要があります。ここの isset は実際には何もしません。捨てるだけ。それでもエラーが発生する場合は、$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']);
}
于 2011-05-28T18:41:00.307 に答える