2015-03-25 53 views
1

我有兩個數組與ids作爲鍵和一些領域,我想合併它們,但我不明白爲什麼它不起作用,這裏是我的示例代碼:用相同的鍵合併數組array_merge_recursive不能按預期工作

$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" 
    ] 
] 

而且有我woulk喜歡有結果:

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 
) 
+0

如果鍵是數字它會追加而不是合併成一個陣列 – Jurgo 2015-03-25 13:23:07

+0

我將使用「id_124」爲鍵,由於該值。 – iBadGamer 2015-03-25 13:26:28

回答

0

更改密鑰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對字符串鍵有效。

+0

謝謝!它的工作,它解釋了爲什麼我的代碼不起作用,但我需要這些ID來確定它是否在兩個陣列中相同的播客.. 除了添加一個字符串的id開頭(像「a124」至極是不好的方法來做我想做的事情...) – iBadGamer 2015-03-25 13:21:18

+0

如果你使用array_merge_recursive,那麼你必須使用像id_1234這樣的字符串鍵。 – 2015-03-25 13:24:58

+0

嗯,它會做的伎倆,我想,謝謝你的幫助 – iBadGamer 2015-03-25 13:26:07

0

它的數字鍵的功能說明不會工作說

如果輸入的數組中有相同的字符串鍵,則這些鍵的值合併在一起,成爲一個數組,這是遞歸進行的,因此,如果其中一個值本身就是一個數組,該函數會將其與另一個數組中的相應條目合併。但是,如果數組具有相同的數字鍵,則後面的值不會覆蓋原始值,但會被附加。

Ref Link