Массив php делает неопределенный индекс: уведомление 0 исчезает - PullRequest
0 голосов
/ 28 мая 2011

Правильно, так что у меня есть 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 ]

2 голосов
/ 28 мая 2011

Определено ли $teams[$row->home_id] определено?

edit: Быстрый и грязный тест для вас:

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']);
}
1 голос
/ 28 мая 2011

Невозможно сказать наверняка без дополнительной информации, но я бы проверил, установлена ​​ли $ row-> position и установлена ​​ли $ row-> home_id, если есть вероятность, что они могут быть неопределенными.

0 голосов
/ 28 мая 2011
$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']);
}
0 голосов
/ 28 мая 2011

Вы должны инициализировать базовый массив, прежде чем помещать в него значения.Здесь 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']);
}
...