簡體   English   中英

合並具有相同鍵的數組,array_merge_recursive無法正常工作

[英]Merge array with same keys, array_merge_recursive doesn't work as expected

我有兩個ID為鍵的數組和一些字段,我想將它們合並,但是我不明白為什么它不起作用,這是我的示例代碼:

$Podcasts1 = array("1234" => array('title' => "myTitle", "type" => "myType"));
$Podcast2 = array("1234" => array("content" => "myContent"));
$podcasts = array_merge_recursive($Podcasts1, $Podcast2);
var_dump($Podcasts1, $Podcast2, $podcasts);

結果如下:

array:1 [▼
  1234 => array:2 [▼
    "title" => "myTitle"
    "type" => "myType"
  ]
]
array:1 [▼
  1234 => array:1 [▼
    "content" => "myContent"
  ]
]
array:2 [▼
  0 => array:2 [▼
    "title" => "myTitle"
    "type" => "myType"
  ]
  1 => array:1 [▼
    "content" => "myContent"
  ]
]

我想得到的結果是:

array:[
1234 => array(
        "title" => "myTitle"
        "type" => "myType"
        "content" => "myContent")
]

我不明白為什么PHP.net上給出的代碼無法正常工作

碼:

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

結果:

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

            [0] => blue
        )

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

將鍵1234更改為類似字符串

 $Podcasts1 = array('a' => array('title' => "myTitle", "type" => "myType"));
 $Podcast2 = array('a' => array("content" => "myContent"));
 $podcasts = array_merge_recursive($Podcasts1, $Podcast2);
 var_dump($Podcasts1, $Podcast2, $podcasts);

array_merge_recursive適用於字符串鍵。

如功能說明所述,它不適用於數字鍵

如果輸入數組具有相同的字符串鍵,則這些鍵的值將合並到一個數組中,然后遞歸完成,因此,如果值之一是數組本身,則函數會將其與相應的條目合並在另一個數組中。 但是,如果數組具有相同的數字鍵,則后面的值將不會覆蓋原始值,而是將其附加。

參考鏈接

暫無
暫無

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

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