我需要把接口返回的数据拼接成上图的方式,我写出来一个,但是请求接口三次直接卡死了。
对这方面不是很熟悉,希望各位指点迷津!谢谢
现在我能把数据拼接成我需要的格式了
$cityList = api('app\system\api\sysproducts_category','getAllList', $params);
$data = [];
foreach ($cityList as $key => $value) {
$data[$key] = [
"id" => $value['id'],
"category_name" => $value['category_name'],
"parent_id" => $value['parent_id'],
"is_show" => $value['is_show'],
"image" => $value['image'],
"describe" => $value['describe'],
"twolevel" => []
];
foreach ($cityList as $key2 => $value2) {
if ($value2['parent_id'] == $value['id']) {
$data[$key]['twolevel'][$key2] = [
"id" => $cityList[$key2]['id'],
"category_name" => $cityList[$key2]['category_name'],
"parent_id" => $cityList[$key2]['parent_id'],
"is_show" => $cityList[$key2]['is_show'],
"image" => $cityList[$key2]['image'],
"describe" => $cityList[$key2]['describe'],
"threelevel" => []
];
foreach ($cityList as $key3 => $value3) {
if ($value3['parent_id'] == $value2['id']) {
$data[$key]['twolevel'][$key2]['threelevel'][$key3] = [
"id" => $value3['id'],
"category_name" => $value3['category_name'],
"parent_id" => $value3['parent_id'],
"is_show" => $value3['is_show'],
"image" => $value3['image'],
"describe" => $value3['describe'],
];
}
}
}
}
}
但是又有问题来了,后台求得数据如下
二级数组三级数组里面的键值我想去掉。
卡死可能很多原因,不过单从代码来看,有以下错误需要修正:
需要把各个循环的
key
,命名成$cityListKey
,$cityTowKey
,$cityThreeKey
之类。然后看问题是否解决,然后再进一步分析。
续问题二
PHP中,如果数组内元素有自定义了键名的话,在
json_encode()
的时候,会将它转成对象形式。反之,不自定义键名,让它按自然数排序,可转成结构更简洁的数组形式:
核心是用好
$array[] = $value
这种不自定义键的方式给数组添加元素。这样在
json_encode
的时候,就能得到想要的简洁效果啦。