Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel刀片服务器的toArray()和json_decode()之间的差异_Json_Laravel - Fatal编程技术网

Laravel刀片服务器的toArray()和json_decode()之间的差异

Laravel刀片服务器的toArray()和json_decode()之间的差异,json,laravel,Json,Laravel,在返回$users时,我使用toArray()和json_decode()得到了完全相同的结果。 但是,在我的视图中循环$users时,toArray()方法出现了一个错误('试图获取非object的属性'xxx')。不适用于json_decode()。知道为什么吗?我在拉威尔6号 $client = HttpClient::create(); $response = $client->request('GET', 'https://jsonplaceholder.typico

在返回$users时,我使用toArray()和json_decode()得到了完全相同的结果。 但是,在我的视图中循环$users时,toArray()方法出现了一个错误('试图获取非object的属性'xxx')。不适用于json_decode()。知道为什么吗?我在拉威尔6号

   $client = HttpClient::create();
   $response = $client->request('GET', 'https://jsonplaceholder.typicode.com/users');
   $users = json_decode($response->getContent());
// $users = $response->toArray();
   return $users;
方法返回纯数组。虽然json_decode()键始终是字符串,但值可以是字符串、数字、true或false、null甚至是对象或数组

因此,您正在尝试访问json_decode返回的对象,如果您在编码时有对象,该对象就会工作。但是,当尝试从数组透视图访问对象时,它将不起作用,因为数组是普通数组

Json_decode()的解释

PHP的json_decode函数接受json字符串并将其转换为PHP变量。通常,JSON数据将表示一个JavaScript数组或对象文字,JSON_解码将其转换为PHP数组或对象

解释PHP数组超出了这个范围。然而:

PHP中的数组实际上是一个有序映射。映射是一种将值与键关联的类型。该类型针对多种不同用途进行了优化;可以将其视为数组、列表(向量)、哈希表(映射的实现)、字典、集合、堆栈、队列等。由于数组值可以是其他数组,所以也可以使用树和多维数组

最后,,
您正在尝试访问json_decode返回的对象-工作正常。但数组不会容纳对象,因此它会抛出试图获取非对象属性的对象。

非常清楚的解释,非常感谢!这是正确的答案,但不幸的是,StackOverflow不允许我将其标记为:/您将其标记为itO是什么意思?不,很抱歉,它可以工作;-)我想我需要15%的声誉才能接受正确的答案