2010-07-09 6 views
4

Я получаю:Неопределенная ошибка смещения, но смещение не определено

Notice: Undefined offset: 0 

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

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

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

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

+2

Совпадают ли номера строк для уведомления. Это может быть в другом месте вашего кода. Может оказаться полезным вывод 'print_r'. –

+0

Попробуйте var_dumping, чтобы убедиться, что 0 является int, а не '0' –

+0

Номера строк соответствуют сообщению об ошибке. Это определенно строка $ members = ..., которая бросает ошибку. Я прокомментировал это, чтобы подтвердить это. print_r выводит массив, который я ожидаю. Я не могу вставить его здесь, так как он содержит конфиденциальную информацию. 0 определенно является int, а не «0». – khendar

ответ

0

ли

var_dump($entries_found); 

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

reset($entries_found); 

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

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

Если все остальное терпит неудачу вы могли бы просто подавить уведомление с

$members = @$entries_found[0]['member']; 
0

I не знаю, что происходит с вашим $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]; 

Получил мое решение здесь: Undefined offset while accessing array element which exists