1. 程式人生 > >yii2 關於helper類 ArrayHelper::merge()

yii2 關於helper類 ArrayHelper::merge()

$arr1 = [
  'name'   => 'terry',
  'age'  =>  15,
  'friend'=> [
    'zhangsan','lisi'
  ],
  'work' =>[
    'aa'  => 11,
    'bb'  => ['aa','bb'],
  ],
];
$arr2 = [
  'name'   => 'water',
  'age'  =>  22,
  'friend'=> [
    'zhangsan','wangwu'
  ],
  'work' =>[
    'cc'  => ['77','bb'],
    'aa'  => 22,
  ],
];
$arr3 = yii\helpers\ArrayHelper::merge($arr1,$arr2);

$arr3的值為:

array(4) { [“name”]=> string(5) “water” [“age”]=> int(22) [“friend”]=> array(4) { [0]=> string(8) “zhangsan” [1]=> string(4) “lisi” [2]=> string(8) “zhangsan” [3]=> string(6) “wangwu” } [“work”]=> array(3) { [“aa”]=> int(22) [“bb”]=> array(2) { [0]=> string(2) “aa” [1]=> string(2) “bb” } [“cc”]=> array(2) { [0]=> string(2) “77” [1]=> string(2) “bb” } } }

可以看到這個陣列的作用:

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回合第二個步驟那樣處理。