首頁 >後端開發 >php教程 >php數組合併三種方法的異同解析

php數組合併三種方法的異同解析

黄舟
黄舟原創
2017-11-14 15:21:181965瀏覽

那麼我們在之前的文章中給大家介紹了實現php數組合併的幾種方法,相信小夥伴們都有所了解了,那麼這幾種方法的異同呢?今天我們就繼續為大家介紹下php數組合併三種方法的異同解析!

1、「+」運算子

#規則:當兩個陣列的鍵名是數字鍵名或字串鍵名可以直接+,$c = $a + $b,在$a後追加($b在$a中不存在的鍵名)鍵名和值。

注意:

  1. 不覆蓋,只是追加不存在的鍵名和對應的值。

  2. 鍵名不重新索引。

  3. 無論是全部數字鍵名還是混合,都只是追加鍵名和值,如果鍵名相同則不進行追加,即把最先出現的值作為最終結果傳回。

1    <?php    
2    $fruit_1 = array( &#39;apple&#39;, &#39;banana&#39; );    
3    $fruit_2 = array( &#39;orange&#39;, &#39;lemon&#39; );    
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=>&#39;a&#39; );    
3    $b = array( 60=>&#39;u&#39;, 66=>&#39;c&#39; );    
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=>&#39;a&#39;, 2=>&#39;b&#39;, &#39;c&#39;=>&#39;c&#39;, &#39;d&#39;=>&#39;d&#39; );    
3    $b = array( 1=>&#39;u&#39;, 3=>&#39;v&#39;, &#39;c&#39;=>&#39;w&#39;, &#39;d&#39;=>&#39;x&#39;, &#39;y&#39;=>&#39;y&#39;, 60=>&#39;z&#39; );    
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. 數字索引,不會覆寫,值合併後,鍵名會連續方式重新索引

  2. 字串鍵名,則該鍵名後面的值將覆蓋前一個值

  3. 1    <?php    
    2    $a = array( &#39;a&#39; );    
    3    $b = array( &#39;u&#39; );    
    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=>&#39;a&#39; );    
3    $b = array( 60=>&#39;u&#39;, 66=>&#39;c&#39; );    
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=>&#39;a&#39;, 2=>&#39;b&#39;, &#39;c&#39;=>&#39;c&#39;, &#39;d&#39;=>&#39;d&#39; );    
3    $b = array( 1=>&#39;u&#39;, 3=>&#39;v&#39;, &#39;c&#39;=>&#39;w&#39;, &#39;d&#39;=>&#39;x&#39;, &#39;y&#39;=>&#39;y&#39;, 60=>&#39;z&#39; );    
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( &#39;a&#39; );    
3    $b = array( &#39;u&#39; );    
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=>&#39;a&#39; );    
3    $b = array( 60=>&#39;u&#39;, 66=>&#39;c&#39; );    
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=>&#39;a&#39;, 2=>&#39;b&#39;, &#39;c&#39;=>&#39;c&#39;, &#39;d&#39;=>&#39;d&#39; );    
3    $b = array( 1=>&#39;u&#39;, 3=>&#39;v&#39;, &#39;c&#39;=>&#39;w&#39;, &#39;d&#39;=>&#39;x&#39;, &#39;y&#39;=>&#39;y&#39;, 60=>&#39;z&#39; );    
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實作數組合併的幾種方法介紹


php數組合並array_merge()函數使用注意事項

#

以上是php數組合併三種方法的異同解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn