$arr1 = [
'name' => 'terry',
'age' => 15,
'friend'=> [
'zhangsan','lisi'
],
'work' =>[
'aa' => 11,
'bb' => ['aa'=>'aa','aa2'=>'aa2'],
'cc' => ['66','bb'],
'dd' => ['dd','dd2']
],
'time'=>1989,
];
$arr2 = [
'name' => 'water',
'age' => 22,
'friend'=> [
'zhangsan','wangwu'
],
'work' =>[
'aa' => 22,
'bb' => ['aa'=>'aaaa','aa3'=>'aa3'],
'cc' => ['77','bb'],
],
];
ArrayHelper::merge($arr1,$arr2);
//结果
[
'name' => 'water',
'age' => 22,
'friend' => ['zhangsan','lisi','zhangsan','wangwu'],//合并
'work' => [
'aa' => 22,
'bb' => ['aa' => 'aaaa','aa2' => 'aa2','aa3' => 'aa3'],//覆盖
'cc' => ['66','bb','77','bb'],//合并
'dd' => ['dd','dd2'],
],
'time' => 1989,
]
可以看到这个数组的作用:
1.如果key是数字,那么value就会进行数组合并,如果值相同,不会覆盖,会出现两个相同值的数组元素,
譬如[1,2]和[2,3]通过merge函数合并的结果为[1,2,2,3].
2.如果数组的key不是数字,则value会被覆盖掉,
譬如[‘aa’ => ‘xxx’]和[‘aa’=>’yy’] merge函数后的结果为[‘aa’=>’yy’].
因此在使用这个方法的时候,要想key覆盖,key一定要用字符串.
array_merge:key不是数字则完全覆盖,是数字则合并