我確定過去有很多類似的問題,所以很抱歉如果它出現之前。基本上,我試圖合併兩個多維數組,同時不爲任何重複鍵創建2個鍵。PHP陣列合併問題
下面是一個例子:
$one = array(
'foo' => array(
'bar' => array(
'hello' => 'world',
'boom' => 'universe'
),
'whiz' => array(
'wham' => array(
'blam' => 'kaplow'
)
)
)
);
$two = array(
'foo' => array(
'whiz' => 'woo',
'king' => array(
'kong' => 'animal'
)
)
);
如果我是使用array_merge_recursive($one, $two);
我會得到下面的結果:
array(1) {
["foo"]=>
array(3) {
["bar"]=>
array(2) {
["hello"]=>
string(5) "world"
["boom"]=>
string(8) "universe"
}
["whiz"]=>
array(2) {
["wham"]=>
array(1) {
["blam"]=>
string(6) "kaplow"
}
// This is the problem.
[0]=>
string(3) "woo"
}
["king"]=>
array(1) {
["kong"]=>
string(6) "animal"
}
}
}
如果我使用array_merge($one, $two);
我會得到如下結果:
array(1) {
["foo"]=>
array(2) {
// This is good but the rest of the array is gone.
["whiz"]=>
string(3) "woo"
["king"]=>
array(1) {
["kong"]=>
string(6) "animal"
}
}
}
下面是我之後的輸出:
array(1) {
["foo"]=>
array(3) {
["bar"]=>
array(2) {
["hello"]=>
string(5) "world"
["boom"]=>
string(8) "universe"
}
// Key is replaced, rest of the array remains intact.
["whiz"]=>
string(3) "woo"
["king"]=>
array(1) {
["kong"]=>
string(6) "animal"
}
}
}
因此,基本上,我是array_merge_recursive()
功能之後,但它也一樣工作array_replace_recursive()
,做你們有什麼想法?
-
我已經接受了一個答案了,但不要氣餒有關顯示任何其他可能更好的方法,我會回來看看。
謝謝你們。
如果你包括你實際預期的輸出,它會有所幫助。 array_replace_recursive的行爲似乎是對問題最直接的解釋。 – MatsLindh 2012-07-19 13:20:06
@fiskfisk編輯。 – daryl 2012-07-19 13:22:05
這不是遞歸的,但不會像'$ merged = $ one ['foo'] + $ two ['foo'];'工作? – Stano 2012-07-19 13:22:13