我使用Guzzle库向我的api发出了一个http请求如下:
$client = new Client();
$response = $client->request(
'GET',
config('some_url');
$serverResponse = json_decode($response->getBody(),true);
if ($serverResponse['result']) {
$data = $serverResponse['data'];
现在我收到了回复
{
"result": true,
"data": {
"101": {
"id": 101,
"name": "ABCD",
"age" : 24
},
"102": {
"id": 102,
"name": "EFGH",
"age" : 24
},
"103": {
"id": 103,
"name": "IJKL",
"age" : 24
},
}
}
问题是我需要读取并将对象模型101,102,103推送到单独的数组。为此,我尝试将对象作为以下选项。但我无法得到结果而不是错误。
$obj = $data[0];
返回Undefined offset:0 error
答案 0 :(得分:2)
因为您的数据是手动索引的,而不是像:
{
"data": {
0: {
"id": 101,
...
},
1: {
"id": 102,
...
},
...
}
}
获取数据时需要指定这些索引。 E.g:
$data["101"]
要为动态设置数据执行此操作,您可以使用array_keys
$obj = $data[array_keys($data)[0]];
使用array_keys
,您可以使用$data
$data
答案 1 :(得分:1)
如果您只是想重新索引数组,以便密钥为[0]
,[1]
,[2]
等,您可以使用以下内容:
$newArray = array_values($data);
然后,您将能够使用$newArray[0]
访问第一个子数组,使用$newArray[1]
访问第二个子数组等。
答案 2 :(得分:0)
您可以将响应转换为对象,然后您可以访问以下属性。
$obj = json_decode($response->getBody());
$one_zero_one = $obj->data->{101};