当只返回$users时,toArray()和json_decode()得到的结果完全相同。但是,在我看来循环$users时,使用toArray()方法得到一个错误(试图获取非对象的属性'xxx‘)。而不是使用json_decode()。知道为什么吗?我在拉拉维尔六号。
$client = HttpClient::create();
$response = $client->request('GET', 'https://jsonplaceholder.typicode.com/users');
$users = json_decode($response->getContent());
// $users = $response->toArray();
return $users;发布于 2020-01-22 10:54:36
toArray()方法返回纯数组。而json_decode()键总是字符串,而值可以是字符串、数字、真或假、null,甚至是对象或数组。
因此,您正在尝试访问json_decode返回的对象,如果您在编码对象时具有对象,则该对象可以工作。但是,当尝试从数组的角度访问对象时,它将无法工作,因为数组是纯数组。
对Json_decode()的解释
PHP的json_decode函数接受JSON字符串并将其转换为PHP变量。通常,JSON数据将表示JavaScript数组或对象文本,json_decode将将其转换为PHP数组或对象。
解释PHP数组超出了这个范围。然而:
中的数组实际上是一个有序映射。映射是将值与键关联的类型。这种类型是针对几种不同的用途进行优化的;它可以被视为数组、列表(向量)、哈希表(映射的实现)、字典、集合、堆栈、队列,等等。由于数组值可以是其他数组,所以树和多维数组也是可能的。
最后,您正在尝试访问json_decode返回的对象--运行良好。但是数组不会保存这样的对象,它会抛出试图获取非对象属性的对象。
https://stackoverflow.com/questions/59857917
复制相似问题