簡體   English   中英

PHP array_merge()函數

[英]PHP array_merge() function

使用array_merge function處理arrays遇到一些問題。 這里是一個例子:

第一個例子:

 $first = array('01' => 1, '03' => 73);
 $second = array('14'=>11, '15' => 23);
 var_dump(array_merge($first, $second));

結果是:

array(4) { ["01"]=> int(1) ["03"]=> int(73) [0]=> int(11) [1]=> int(23) } 

預期:

array(4) { ["01"]=> int(1) ["03"]=> int(73) [14]=> int(11) [15]=> int(23) } 

第二個例子:

 $first = array('01'=>3, '03'=>10);
 $second = array('05'=>44, '07'=>3);
 var_dump(array_merge($first,$second));

結果是(按預期):

array(4) { ["01"]=> int(3) ["03"]=> int(10) ["05"]=> int(44) ["07"]=> int(3) }

第三個例子:

var_dump(array_merge(array("somekey"=> array("some value"))));

結果是(按預期):

array(1) { ["somekey"]=> array(1) { [0]=> string(10) "some value" } } 

第四個例子:

var_dump(array_merge(array("34"=> array("some value"))));

結果是:

array(1) { [0]=> array(1) { [0]=> string(10) "some value" } } 

預期:

array(1) { [0]=> array(1) { ["34"]=> string(10) "some value" } } 

var_dump(array_merge(array("34"=> array("some value"))));

thirdfourth示例中可以看到,我為鍵設置了字符串,但結果與預期不符。

什么是理解上的錯誤或不正確? 感謝您的幫助。

編輯。 為什么(示例第一和第二個)結果不同,但是鍵是字符串並且僅由摘要組成?

從手冊中引用:

如果輸入數組具有相同的字符串鍵,則該鍵的后一個值將覆蓋前一個。 但是,如果數組包含數字鍵,則后面的值將不會覆蓋原始值,而是將其附加。

使用數字鍵的輸入數組中的值將使用從結果數組中的零開始的遞增鍵重新編號。

具有前導零的鍵被視為字符串,而沒有前導零的數字鍵被視為數字

如果要完全保留密鑰,請執行以下操作:

$first = array('01' => 1, '03' => 73);
$second = array('14'=>11, '15' => 23);
var_dump(
    array_combine(
        array_merge(
            array_keys($first), array_keys($second)
        ),
        array_merge(
            $first, $second
        )
    )
);

只要鍵在$ first和$ second之間是唯一的

定義:將一個或多個數組的元素合並在一起,以便將一個數組的值附加到前一個數組的末尾。 它返回結果數組。

如果輸入數組具有相同的字符串鍵,則該鍵的后一個值將覆蓋前一個。 但是,如果數組包含數字鍵,則后面的值將不會覆蓋原始值,而是將其附加。

使用數字鍵的輸入數組中的值將使用從結果數組中的零開始的遞增鍵重新編號。

輸入

 <?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
)

希望能幫助到你:)

嘗試使用array_merge()如下:

$first = array('01' => 1, '03' => 73);
$second = array('14'=>11, '15' => 23);
$output = array_merge($first, $second);
print_r($output);

編輯:-

$first = array('01' => 1, '03' => 73);
$second = array('14'=>11, '15' => 23);
$output = $first + $second;
print_r($output);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM