php多维数组合并_php合并多维数组,递归合并

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));

输出结果如下

83779d51fb06eca3adc6ef99ec50081e.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值