1. 程式人生 > >【PHP 手冊 >陣列 函式】array_merge_recursive,array_merge

【PHP 手冊 >陣列 函式】array_merge_recursive,array_merge

【1】  array_merge_recursive 與  【2】 array_merge 

異:
合併的陣列中有相同的字串鍵名時,
【1】 以該鍵名構建二維陣列,連續的數字索引為二維鍵名依次排序鍵值;
【2】鍵名不變,後者鍵值覆蓋前者

同:
合併的陣列中有相同的數字鍵名時,兩者都接上一個數字索引附加到後面連續

(PHP 4 >= 4.0.1, PHP 5, PHP 7)
array_merge_recursive — 遞迴地合併一個或多個數組

說明

array array_merge_recursive ( array $array1 [, array $... ] )

array_merge_recursive() 將一個或多個數組的單元合併起來,一個數組中的值附加在前一個數組的後面。返回作為結果的陣列。

如果輸入的陣列中有相同的字串鍵名,則這些值會被合併到一個數組中去,這將遞迴下去,因此如果一個值本身是一個數組,本函式將按照相應的條目把它合併為另一個數組。然而,如果陣列具有相同的陣列鍵名,後一個值將不會覆蓋原來的值,而是附加到後面。

引數

array1
要合併的初始陣列。


陣列變數列表,進行遞迴合併。

返回值

一個結果陣列,其中的值合併自附加的引數。

範例

Example #1 array_merge_recursive() 例子

<?php
$ar1 = array("color" => array("favorite" => "red"), 5);
$ar2 = array(10, "color" => array("favorite" => "green", "blue"));
$result = array_merge_recursive($ar1, $ar2);
print_r($result);
?>

以上例程會輸出:

Array
(
    [color] => Array
        (
            [favorite] => Array
                (
                    [0] => red
                    [1] => green
                )

            [0] => blue
        )

    [0] => 5
    [1] => 10
)

(PHP 4, PHP 5, PHP 7)
array_merge — 合併一個或多個數組

說明

array array_merge ( array $array1 [, array $... ] )

array_merge() 將一個或多個數組的單元合併起來,一個數組中的值附加在前一個數組的後面。返回作為結果的陣列。

如果輸入的陣列中有相同的字串鍵名,則該鍵名後面的值將覆蓋前一個值。然而,如果陣列包含數字鍵名,後面的值將不會覆蓋原來的值,而是附加到後面。

如果只給了一個數組並且該陣列是數字索引的,則鍵名會以連續方式重新索引。

引數

array1
要合併的第一個陣列。


要合併的陣列列表。

返回值

返回結果陣列。

範例

Example #1
相同字串鍵名:後者的鍵值覆蓋前者
相同數字鍵名:後面的鍵值以連續方式重新索引

<?php
$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);
?>

以上例程會輸出:

Array
(
    [color] => green
    [0] => 2
    [1] => 4
    [2] => a
    [3] => b
    [shape] => trapezoid
    [4] => 4
)

Example #2 數字鍵名重新編號

<?php
$array1 = array();
$array2 = array(1 => "data");
$result = array_merge($array1, $array2);
?>

以上輸出

Array
(
    [0] => data
)

+ 運算子,原有陣列不變,新的陣列附加到後面

    <?php
    $array1 = array(0 => 'zero_a', 2 => 'two_a', 3 => 'three_a');
    $array2 = array(1 => 'one_b', 3 => 'three_b', 4 => 'four_b');
    $result = $array1 + $array2;
    var_dump($result);
    ?>

第一個陣列的鍵名將會被保留。在兩個陣列中存在相同的鍵名時,第一個陣列中的同鍵名的元素將會被保留,第二個陣列中的元素將會被忽略

array(5) {
  [0]=>
  string(6) "zero_a"
  [2]=>
  string(5) "two_a"
  [3]=>
  string(7) "three_a"
  [1]=>
  string(5) "one_b"
  [4]=>
  string(6) "four_b"
}

Example #3 array_merge() 合併非陣列的型別

<?php
$beginning = 'foo';
$end = array(1 => 'bar');
$result = array_merge((array)$beginning, (array)$end);
print_r($result);
?>

以上例程會輸出:

Array
(
    [0] => foo
    [1] => bar
)