$array1 = [ 'ids' =>[2], 'validDomains' => [ 'example.com', 'www.example.com', ], ]; $array2 = [ 'ids' => [1], 'validDomains' => new \yii\helpers\ReplaceArrayValue([ 'yiiframework.com', 'www.yiiframework.com', ]), ];
print_r(ArrayHelper::merge($array1,$array2));
结果如下:
Array( [ids] => Array ( [0] => 1 [1] => 2 ) [validDomains] => Array ( [0] => yiiframework.com [1] => www.yiiframework.com ))
可以看到这个数组的作用:
1.如果key是数字,那么value就会进行数组合并,如果值相同,不会覆盖,会出现两个相同值的数组元素,譬如[1,2]和[2,3]通过merge函数合并的结果为[1,2,2,3].
2.如果数组的key不是数字,而且数组里面的value不是数字,则value会被覆盖掉
譬如[‘aa’ => ‘xxx’]和[‘aa’=>’yy’] merge函数后的结果为[‘aa’=>’yy’],
3.如果数组的key不是数字,而value是数组(数组的key是数字),则会进行数组合并。
4.如果数组的key不是数字,而value是数组(数组的key不是数字),则value数组中的key回合第二个步骤那样处理。
5.如果想要数组A中的某个健值替换掉B数组中的值,那么可以定义A中数组的健值为 ReplaceArrayValue 的对象,并且A数组为merge的第二个参数。
6.如果想要删除数组B中的某个健值,那么可以定义A中数组的健值为 UnsetArrayValue 的对象,并且A数组为merge的第二个参数。