yii2 關於helper類 ArrayHelper::merge()
阿新 • • 發佈:2018-11-03
$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回合第二個步驟那樣處理。