PHP json_decode: объект в ассоциативный массив - PullRequest
2 голосов
/ 12 мая 2011

Синтаксис для json_decode:

mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )

Обратите внимание на второй параметр $assoc, который является необязательным и по умолчанию имеет значение false. Когда этот параметр равен true, json_decode преобразует объекты в ассоциативные массивы.

Мой вопрос: В каждом случае вы бы НЕ хотели бы преобразовать возвращенный объект в ассоциативный массив?

Ответы [ 5 ]

5 голосов
/ 06 июня 2011

Если функция возвращает ассоциативный массив, до PHP 5.4 вы не могли напрямую обращаться к ее членам как foo () ['xxx'].Однако, если он возвращает объект, вы можете получить доступ к членам как foo () -> xxx.

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

2 голосов
/ 12 мая 2011

Когда вы хотите преобразовать его в объект ...

0 голосов
/ 14 марта 2017

Вам необходимо передать дополнительный аргумент с истинным значением. json_decode ($ р, правда);

0 голосов
/ 06 июня 2011

По моему мнению, это способ подчеркнуть разницу между списком (в php, выраженном числовым массивом) и сущностью (объектом).Это может быть более читабельным, потому что можно использовать используемый метод доступа ([] или ->), к какому типу данных осуществляется доступ.

0 голосов
/ 06 июня 2011

Лично я всегда запрашиваю ассоциативный массив и считаю, что с ним легче работать, чем с объектом, возвращаемым, когда $ assoc = false.

Но я бы сказал, что большинство кода, который я видел (в основном различные клиентские библиотеки веб-служб), использовали json_decode с $ assoc = false и объекты вместо ассоциативных массивов.Я думаю, что это в основном вопрос предпочтений, поскольку я не видел какой-либо конкретной веской причины для выбора того или иного пути.

Извините за отсутствие ответа: -)

...