那麼我們在之前的文章中給大家介紹了實現php數組合併的幾種方法,相信小夥伴們都有所了解了,那麼這幾種方法的異同呢?今天我們就繼續為大家介紹下php數組合併三種方法的異同解析!
1、「+」運算子
#規則:當兩個陣列的鍵名是數字鍵名或字串鍵名可以直接+,$c = $a + $b,在$a後追加($b在$a中不存在的鍵名)鍵名和值。
注意:
不覆蓋,只是追加不存在的鍵名和對應的值。
鍵名不重新索引。
無論是全部數字鍵名還是混合,都只是追加鍵名和值,如果鍵名相同則不進行追加,即把最先出現的值作為最終結果傳回。
1 <?php 2 $fruit_1 = array( 'apple', 'banana' ); 3 $fruit_2 = array( 'orange', 'lemon' ); 4 $fruit = $fruit_1 + $fruit_2; 5 var_dump($fruit); 6 7 // output: 8 // array(2) { [0]=> string(5) "apple" [1]=> string(6) "banana" } 9 ?>
數字鍵名稱:
1 <?php 2 $a = array( 66=>'a' ); 3 $b = array( 60=>'u', 66=>'c' ); 4 $c = $a + $b; 5 var_dump($c); 6 7 // output: 8 // array(2) { [66]=> string(1) "a" [60]=> string(1) "u" } 9 ?>
字元鍵名稱:
1 <?php 2 $a = array( 1=>'a', 2=>'b', 'c'=>'c', 'd'=>'d' ); 3 $b = array( 1=>'u', 3=>'v', 'c'=>'w', 'd'=>'x', 'y'=>'y', 60=>'z' ); 4 $c = $a + $b; 5 var_dump($c); 6 7 // output: 8 // array(7) { [1]=> string(1) "a" [2]=> string(1) "b" ["c"]=> string(1) "c" ["d"]=> string(1) "d" [3]=> string(1) "v" ["y"]=> string(1) "y" [60]=> string(1) "z" } 9 ?>
2、array array_merge ( array array1 [, array array2 [, array ...]] )
##規則:array_merge() 會一個或更多個數組的單元合併起來,一個數組中的值附加在前一個數組的後面。傳回作為結果的陣列。 如果輸入的陣列中有相同的字串鍵名,則該鍵名後面的值將覆寫前一個值。然而,如果數組包含數字鍵名,後面的值將不會覆蓋原來的值,而是附加到後面。 如果只給了一個陣列且該陣列是數字索引的,則鍵名會以連續方式重新索引。 注意:
1 <?php 2 $a = array( 'a' ); 3 $b = array( 'u' ); 4 $c = array_merge($a, $b); 5 var_dump($c); 6 7 // output: 8 // array(2) { [0]=> string(1) "a" [1]=> string(1) "u" } 9 ?>
數字鍵名:
1 <?php 2 $a = array( 66=>'a' ); 3 $b = array( 60=>'u', 66=>'c' ); 4 $c = array_merge($a, $b); 5 var_dump($c); 6 7 // output: 8 // array(3) { [0]=> string(1) "a" [1]=> string(1) "u" [2]=> string(1) "c" } 9 ?>字元鍵名:
1 <?php 2 $a = array( 1=>'a', 2=>'b', 'c'=>'c', 'd'=>'d' ); 3 $b = array( 1=>'u', 3=>'v', 'c'=>'w', 'd'=>'x', 'y'=>'y', 60=>'z' ); 4 $c = array_merge($a, $b); 5 var_dump($c); 6 7 // output: 8 // array(8) { [0]=> string(1) "a" [1]=> string(1) "b" ["c"]=> string(1) "w" ["d"]=> string(1) "x" [2]=> string(1) "u" [3]=> string(1) "v" ["y"]=> string(1) "y" [4]=> string(1) "z" } 9 ?>
3、array array_merge_recursive ( array array1 [, array ...] )
array_merge_recursive()將一個或多個數組的單元合併起來,一個數組中的值附加在前一個數組的後面。傳回作為結果的陣列。 如果輸入的數組中有相同的字串鍵名,則這些值會被合併到一個數組中去,這將遞歸下去,因此如果一個值本身是一個數組,則這些值將按照相應的條目把它合併為另一個數組。 然而,如果陣列具有相同的陣列鍵名,後一個值將不會覆寫原來的值,而是附加到後面。 注意:規則跟array_merge基本上相同,只是在處理相同字元鍵名的時候,採用遞歸追加。1 <?php 2 $a = array( 'a' ); 3 $b = array( 'u' ); 4 $c = array_merge_recursive($a, $b); 5 var_dump($c); 6 7 // output: 8 // array(2) { [0]=> string(1) "a" [1]=> string(1) "u" } 9 ?>數字鍵名稱:
1 <?php 2 $a = array( 66=>'a' ); 3 $b = array( 60=>'u', 66=>'c' ); 4 $c = array_merge_recursive($a, $b); 5 var_dump($c); 6 7 // output: 8 // array(3) { [0]=> string(1) "a" [1]=> string(1) "u" [2]=> string(1) "c" } 9 ?>字元鍵名稱:
1 <?php 2 $a = array( 1=>'a', 2=>'b', 'c'=>'c', 'd'=>'d' ); 3 $b = array( 1=>'u', 3=>'v', 'c'=>'w', 'd'=>'x', 'y'=>'y', 60=>'z' ); 4 $c = array_merge_recursive($a, $b); 5 var_dump($c); 6 7 // output: 8 // array(8) { [0]=> string(1) "a" [1]=> string(1) "b" ["c"]=> array(2) { [0]=> string(1) "c" [1]=> string(1) "w" } ["d"]=> array(2) { [0]=> string(1) "d" [1]=> string(1) "x" } [2]=> string(1) "u" [3]=> string(1) "v" ["y"]=> string(1) "y" [4]=> string(1) "z" } 9 ?>
總結:
本文透過實例詳細介紹了php數組合併的三種方法異同,每個方法都有優缺點,小夥伴們可以依照自己的需求選擇自己合適的方法!相關推薦:#
#以上是php數組合併三種方法的異同解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!