Массив php делает неопределенный индекс: 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 ответа

Решение

Является $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']);
}

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

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