2015-03-22 3 views
0

У меня есть функция, которая возвращает эту часть информации следующим образом:не удается получить доступ к данным в возвращаемой JSON

return json_encode(["id" => 0]); 

также попытался

return json_encode(array("id" => 0)); 

и

return json_encode(array("id" => 0), JSON_FORCE_OBJECT); 

В пределах вызывающая функция Я сохранил возвращаемое значение в переменной $ var. Затем я пытаюсь получить доступ к элементу «ID» следующим образом:

$var->id 

Я получаю Попытки получить свойство не-объект ошибки.

Я проверил php.net и по разным вопросам в Stackoverflow, но не могу найти решение.

+3

Почему это вообще кодируется json? –

+0

Если я верну его как массив без json_encode, я до сих пор не могу получить к нему доступ с $ var-> id – L4zl0w

+0

что-то не так с '$ var ['id']'? –

ответ

1

Загрузить var_dump 'возвращаемое значение. json_encode возвращает JSON как строку, которая затем может быть проанализирована в объект или массив. Если $var является результатом json_encode, тогда вы не можете получить доступ к каким-либо свойствам закодированных данных без его разбора.

Основываясь на своем пересмотренном вопрос:

Похоже, что вы на самом деле пытаетесь сделать отливают массив к объекту. Все, что вам нужно сделать для достижения этой цели является:

$var = (object) ['id' => 0]; 

Флаг JSON_FORCE_OBJECT преобразует массивы объектов и кодирует их в качестве такого. Результатом остается строка JSON. Если вы должны были называть json_decode на этой строке, у вас был бы объект, но это неправильный способ передать массив объекту.

+0

Это сделало трюк! Большое спасибо @mtinsley – L4zl0w