Массив 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']);
}