1. 程式人生 > >深入解析array_merge函式的用法 php (轉)

深入解析array_merge函式的用法 php (轉)

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_b
9 )

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