正在开发Laravel应用程序,由此我调用API来获取一些数据并显示 在视图上。返回的数据是多维数组/嵌套数组,其中 数据对象中的第一个数组可能为 unit_sales 或 agents ,如下面的代码所示。
现在,我正在尝试创建一些PHP逻辑来检查第一个数组键是unit_sales还是 代理程序会获取其下的所有数据并作为变量返回。例如,如果下面的数据对象中的第一个array_key是unit_sales,则提取其下的所有数据并存储在变量中;如果代理,则提取其下的所有数据,存储在变量中并返回。
NB〜API响应存储在名为rs的变量中
API的响应1
{
"request_time": "2018-12-21 16:56:22",
"response_time": "2018-12-21 16:56:23",
"status": "success",
"message": "Hierachies",
"data": {
"unit_sales": [
{
"id": "11**",
"agents": [
{
"agent_no": "68**",
"policies": [
"IL***********",
"IL************",
"IL***********"
]
},
{
"agent_no": "53983",
"policies": [
"IL**********",
"IL***********",
"IL***********"
]
}
]
}
]
}
}
API的响应2
{
"request_time": "2018-12-21 16:56:22",
"response_time": "2018-12-21 16:56:23",
"status": "success",
"message": "Hierachies",
"data": {
"agents": [
{
"agent_no": "68**",
"policies": [
"IL***********",
"IL************",
"IL***********"
]
},
{
"agent_no": "53**",
"policies": [
"IL**********",
"IL***********",
"IL***********"
]
}
]
}
}
我写过但一路迷路的逻辑
if(array_key_exists("unit_sales",$rs)){
$data= collect(collect($rs)->first()[0])['unit_sales'];
$data = collect($data)->map(function($item){
if(array_key_exists('unit_sales',$item)){
$agents = collect($item['unit_sales'])->map(function($item2){
if(array_key_exists('agents',$item2)){
return $item2['unit_sales'];
}
});
return $unit;
}else{
return ;
}
});
}
else if(array_key_exists("agents",$rs)){
$data= collect($rs)->'agents';
$data = collect($data)->map(function($item){
if(array_key_exists('agents',$item)){
$agents = collect($item['agents'])->map(function($item2){
if(array_key_exists('agents',$item2)){
return $item2['agents'];
}
});
return $agents;
}else{
return ;
}
});
}
答案 0 :(得分:1)
如果收到json响应,则需要对其进行解码以访问其键,然后是值
$rs = json_decode($rs);
$data = $rs->data; //sets array to just the "data" key
if(array_key_exists("unit_sales",$data))
{
//do stuff
}
else if (array_key_exists("agents",$data))
{
//do stuff
}
答案 1 :(得分:0)
看起来您只需要在执行data
方法之前进入array_key_exists
?
也许是这样...
array_key_exists("unit_sales",$rs->data)
我也同意@omphonia,您可能需要先json_decode()
回复。