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、反向将数组升维
 
二. 递归合并多维数组