Разница между toArray () и json_decode () для Laravel Blade - PullRequest
0 голосов
/ 22 января 2020

Когда я просто возвращаю $ users, я получаю точно такой же результат с toArray () и json_decode (). Но когда я зацикливаю $ users в моем представлении, я получаю ошибку ('Попытка получить свойство' xxx 'не-объекта) с методом toArray (). Не с помощью json_decode (). Есть идеи почему? Я на Laravel 6.

   $client = HttpClient::create();
   $response = $client->request('GET', 'https://jsonplaceholder.typicode.com/users');
   $users = json_decode($response->getContent());
// $users = $response->toArray();
   return $users;

1 Ответ

0 голосов
/ 22 января 2020

Метод toArray () возвращает чистый массив. В то время как ключи json_decode () всегда являются строками, а значение может быть строкой, числом, истиной или ложью, нулем или даже объектом или массивом.

Поэтому вы пытаетесь получить доступ к объекту, возвращенному json_decode. который работает, если у вас есть объекты во время его кодирования. Но, пытаясь получить доступ к объекту с точки зрения массива, он не будет работать, потому что массивы являются простым массивом.

Объяснение функции Json_decode ()

PHP json_decode принимает строку JSON и преобразует ее в переменную PHP. Как правило, данные JSON представляют массив или литерал объекта JavaScript, который json_decode преобразует в массив или объект PHP.

Объяснение массива PHP выходит за рамки этой области. Однако:

Массив в PHP на самом деле является упорядоченной картой. Карта - это тип, который связывает значения с ключами. Этот тип оптимизирован для нескольких различных применений; это может быть обработано как массив, список (вектор), таблица ha sh (реализация карты), словарь, коллекция, стек, очередь и, возможно, больше. Поскольку значения массива могут быть другими массивами, деревья и многомерные массивы также возможны.

Наконец, вы пытаетесь получить доступ к объекту, возвращенному json_decode - работает нормально. Но массив не будет содержать объекты таким образом, что он выбрасывает это, пытаясь получить свойство не-объекта.

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