php合并多维数组,递归合并
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
更新时间:
2020-01-11 22:23:11
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章
php有array_merge合并数组功能,但是有个问题,这个函数只合并一维数组,如果有多维数组,则后面的会覆盖前面数组中的子节点,因此写啦另一个深度合并的函数来合并子节点的元素
/** * 深度合并数组 * @DateTime 2020-01-11 * @Author mokuyu * * @param [type] $arrs [description] * @return [type] */ function array_merge_deep(...$arrs) { $merged = []; while ($arrs) { $array = array_shift($arrs); if (!$array) {continue;} foreach ($array as $key => $value) { if (is_string($key)) { if (is_array($value) && array_key_exists($key, $merged) && is_array($merged[$key])) { $merged[$key] = array_merge_deep(...[$merged[$key], $value]); } else { $merged[$key] = $value; } } else { $merged[] = $value; } } } return $merged; } $arr1 = [ 'oss' => [ 'access_key_id' => 'asdfasdfsdf', 'app_secket' => '', ], ]; $arr2 = [ 'oss' => [ 'on' => true, 'domain' => 'www.res.com', ], ]; var_dump(array_merge($arr1, $arr2)); var_dump(array_merge_deep($arr1, $arr2));
输出结果如下