我想在PHP中使用array_merge_recusive的做类似的东西,而不是
<?php
$A = array("EUR"=>10);
$B = array("EUR"=>10,"JPY"=>20);
$C = $A;
foreach ($B as $key => $value) {
if (!isset($C[$key])) {
$C[$key][] = array();
}
$C[$key] = $value;
}
var_dump($C);
array(2) {
["EUR"]=>
int(10)
["JPY"]=>
int(20)
}
我需要这样的:
array(2) {
["EUR"]=>array(10,10),
["JPY"]=> int(20)
}
编辑
检查代码,我想在这里http://codepad.org/x4MuYCiH我没有什么错,我不能得到预期的结果?
谢谢
对于解决方案看到这个贴: http://codepad.org/60IKweVu 。 我还显示,在这个答案底部的代码。 该解决方案是基于以前的这个问题示例数据阵列合并和总如果相同的键 。
注意
array(2) {
["EUR"]=>array(10,10),
["JPY"]=> int(20)
}
相当于
array(2) {
["EUR"]=> array([0] => 10, [1] => 10),
["JPY"]=> int(20)
}
但是,所述第一符号根本不显示嵌套阵列的密钥。
CODE:
<?php
$A = array("EUR"=>10,"USD"=>20);
$B = array("EUR"=>10,"JPY"=>20);
$C = array_merge_recursive($A, $B);
var_dump($C);
//
// This emulates the array_merge_recursive call
//
$C = array();
$allArrays = array($A, $B);
foreach($allArrays as $array) {
foreach ($array as $key => $value) {
if (! isset($C[$key])) {
$C[$key] = array();
}
$C[$key][] = $value;
}
}
foreach ($C as $index => $values) {
if (count($values) == 1) {
$C[$index] = $values[0];
}
}
var_dump($C);
这是正确的代码:
foreach ($B as $key => $value) {
if (! isset($C[$key]) )
$C[$key] = $value;
else
{
if (isset($C[$key]) && !is_array($C[$key]) )
$C[$key] = array($C[$key]);
$C[$key][] = $value;
}
}