我给了数组:
array(
"firstName": null,
"lastName": null,
"category": [
"name": null,
"service": [
"foo" => [
"bar" => null
]
]
]
)
需要转换为此:
array(
0 => "firstName",
1 => "lastName",
2 => "category",
"category" => [
0 => "name",
1 => "service",
"service" => [
0 => "foo",
"foo" => [
0 => "bar"
]
]
]
)
循环应检查值是否为数组,如果是,则应将键作为值(0 => category
)添加到数组的根,然后保留键原样({{1} }),然后再次遍历该值以构建树,如示例所示。
我对此一无所知,每次尝试,都会得到错误的结果。有没有人是阵列专家并且知道如何简单地做到这一点?
到目前为止的代码:
category => ...
答案 0 :(得分:1)
您可以使用array_reduce
:
function prepareFields(array $array): array
{
return array_reduce(array_keys($array), function ($result, $key) use ($array) {
$result[] = $key;
if (is_array($array[$key])) {
$result[$key] = prepareFields($array[$key]);
}
return $result;
});
}
答案 1 :(得分:0)
您可以执行此操作,请选中Demo
function array_format(&$array){
$temp_array = [];
foreach($array as $k=>$v){
$temp_array[] = $k;
if(is_array($v)){
array_format($v);
$temp_array[$k] = $v;
}
}
$array = $temp_array;
}
array_format($array);
print_r($array);