php 深层多维数组转换为一位数组
- 调用 php 数组函数
array_walk_recursive
递归获取深层数组的键值, 但无法获取属于数组的键名
。
function deep_multi_to_single(array $arr)
{
$result = [];
array_walk_recursive($arr, function ($value, $key) use (&$result) {
$result[$key] = $value;
});
return $result;
}
- 手动处理获取递归深层数组的逻辑操作,
可以完全获取属于数组的键名
,根据需要操作。
function deep_multi_to_single(array $arr)
{
$keys = [];
$vals = [];
$data = multi_to_two($arr);
foreach ($data as $key => $val) {
foreach ($val as $k => $v) {
$keys[] = $k;
$vals[] = $v;
}
}
return array_combine($keys, $vals);
}
function multi_to_two(array $data = [])
{
static $array;
if (is_array($data)) {
foreach ($data as $k => $p) {
if (is_array($p)) {
multi_to_two($p);
} else {
$array[] = array($k => $p);
}
}
}
return $array;
}