Неопределенная ошибка смещения, но смещение не является неопределенным

Я собираюсь:

Notice: Undefined offset: 0 

в моем коде, однако я могу print_r элемент, который я пытаюсь получить, и он четко определен.

function get_members($entries_found) {
   $members = $entries_found[0]['member'];
   ...
}

Если я печатаю_r($members), я получаю ожидаемый результат, однако я все еще получаю уведомление.

Любые подсказки?


person khendar    schedule 09.07.2010    source источник
comment
Совпадают ли номера строк для Уведомления. Это может быть в другом месте вашего кода. Вывод print_r может быть полезен.   -  person Jason McCreary    schedule 09.07.2010
comment
Попробуйте var_dumping, чтобы убедиться, что 0 является целым числом, а не «0».   -  person Mike B    schedule 09.07.2010
comment
Номера строк совпадают с сообщением об ошибке. Это определенно строка $members = ..., которая вызывает ошибку. Я прокомментировал это, чтобы подтвердить это. print_r выводит массив, который я ожидаю. Я не могу вставить его сюда, так как он содержит конфиденциальную информацию. 0 определенно является int, а не «0».   -  person khendar    schedule 09.07.2010
comment
Укажите код массива и/или код функции, чтобы другие пользователи могли лучше его найти и помочь в процессе отладки.   -  person Knowledge Craving    schedule 10.07.2010
comment
PHP не будет лгать вам, когда он даст вам это уведомление. Вы должны что-то упустить, возможно, сделать print_r($entries_found) и особенно, если вы действительно хотите написать хороший код, проверьте существование индекса, прежде чем получить из него значение.   -  person hakre    schedule 23.10.2011


Ответы (2)


Do

var_dump($entries_found);

Чтобы убедиться, что массив действительно имеет нулевое смещение. Другие вещи, которые вы можете попробовать, это сброс указателя массива.

reset($entries_found);

проверки, установлен ли он первым

if (isset($entries_found[0]['member'])) // do things

Если ничего не помогает, вы можете просто подавить уведомление с помощью

$members = @$entries_found[0]['member'];
person Steve Robbins    schedule 30.05.2012

Я действительно не знаю, что происходит с вашим $entries_found до доступа к нему из get_members

Но у меня была такая же проблема. print_r и var_dump показали мне, что индекс существует, но когда я попытался получить к нему доступ, я получил offset error

В моем случае я декодировал строку json с json_decode без установки флага assoc.

// Not working
$assocArray = json_decode('{"207":"sdf","210":"sdf"}');
echo $assocArray[207];


// working witht the assoc flag set
$assocArray = json_decode('{"207":"sdf","210":"sdf"}', true);
echo $assocArray[207];

Получил мое решение отсюда: Неопределенное смещение при доступе к существующему элементу массива

person Mazz    schedule 13.11.2017