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));输出结果如下
