我确定过去有很多类似的问题,所以很抱歉如果它出现之前。基本上,我试图合并两个多维数组,同时不为任何重复键创建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