深入解析array_merge函式的用法 php (轉)
阿新 • • 發佈:2019-01-08
array_merge是我們用來合併陣列使用最多的函式;
下面就來深入解析array_merge的用法;
第四點是個坑需注意;
1:如果陣列中有相同的字串鍵名;
則該鍵名後面的值覆蓋前面的值;
如果想讓前面的值覆蓋後面;
則可以使用+號;
1 $a=array( 2 'a'=>'first a', 3 'b'=>'b' 4 ); 5 $b=array( 6 'c'=>'c', 7 'a'=>'second a' 8 ); 9$result=array_merge($a,$b); 10 var_dump($result); 11 $result=$a+$b; 12 var_dump($result);
使用 array_merge 保留了second a 輸出如下
1 Array 2 ( 3 [a] => second a 4 [b] => b 5 [c] => c 6 )
使用+號 則保留了first_a 輸出如下
1 $a=array( 2 0=>'zero_a', 3 2=>'two_a', 4 3=>'three_a' 5); 6 $b=array( 7 1=>'one_b', 8 3=>'three_b', 9 4=>'four_b' 10 ); 11 $result=array_merge($a,$b); 12 var_dump($result);
輸出如下
1 Array 2 ( 3 [0] => zero_a 4 [1] => two_a 5 [2] => three_a 6 [3] => one_b 7 [4] => three_b 8 [5] => four_b9 )
3:如果只傳入一個數組;並且鍵名是數字;則格式化鍵名;
1 $a=array( 2 1=>1, 3 3=>3, 4 6=>6 5 ); 6 $result=array_merge($a); 7 var_dump($result);
輸出如下
1 Array 2 ( 3 [0] => 1 4 [1] => 3 5 [2] => 6 6 )
4:如果傳的引數中有一個不是陣列
則返回null
此處需要注意
在開發過程中
我們可能需要把兩次查詢的資料合併成一個數組
如果有一個查詢為空
那麼使用array_merge函式合併的結果就是null;
我曾多次被null所坑而寫此篇部落格重要的原因也是因為此;
1 $a=array( 2 1=>1, 3 6=>6 4 ); 5 $b=''; 6 $result=array_merge($a,$b); 7 var_dump($result);
輸出如下
1 null
因此;在不確定需要array_merge的陣列是否有空值的時候;直接使用(array)強制轉陣列;上面的程式碼就可以改成如下形式
1 $result=array_merge((array)$a,(array)$b);
本文為白俊遙原創文章,轉載無需和我聯絡,但請註明來自白俊遙部落格http://baijunyao.com