php多维数组合并
首先,array_merge() 函数不能合并多维数组。
一、降维合并后升维
比较推荐第二种写法。
1. 把多维数组降成一维数组
/**
* 多维to一维
* @param $array
* @param string $delimiter
* @param string $key
* @return array
*/
function multi2one ($array, $delimiter = '->', $key = '') {
$data = [];
if ( !is_array($array) ) {
return $data;
}
foreach ( $array as $k => $v ) {
$newKey = trim($key.$delimiter.$k, $delimiter);
if ( is_array($v) ) {
$data = array_merge($data, multi2one($v, $delimiter, $newKey));
} else {
$data[$newKey] = $v;
}
}
return $data;
}
//降维前
$array = [
'a' => [
'b' => 1,
'c' => [
'd' => 2,
'e' => 3
]
],
'f' => 4
]
//降维后
$array = [
'a->b' => 1,
'a->c->d' => 2,
'a->c->e' => 3,
'f' => 4
]
2、使用 array_merge() 函数进行合并
3、反向将数组升维
二. 递归合并多维数组