我找到了几个帖子,但没有一个是有效的。尝试了array_merge,array_replace_recursive,array_merge_recursive,但没有达到我的目的。
我想将下面的5个数组合并为单个数组,但我不明白为什么年代会发生变化。是不是因为文件说的那些:
但是,如果数组具有相同的数字键,则后面的值 不会覆盖原始值,但会被追加。
<?php
$a['x'][2015]['s'] = "xxxxxx";
$a['x'][2015]['d'] = 1;
$b['x'][2014]['s'] = "yyyyyyyyy";
$b['x'][2014]['d'] = 3;
$c['x'][2013]['s'] = "sssssss";
$c['x'][2013]['d'] = 22;
$d['x'][2012]['s'] = "ddddddddddddd";
$d['x'][2012]['d'] = 21;
$f['x'][2011]['s'] = "ffffffff";
$f['x'][2011]['d'] = 52;
$e = array();
$e = array_replace_recursive ($e,$a);
$e = array_replace_recursive ($e,$b);
$e = array_replace_recursive ($e,$c);
$e = array_replace_recursive ($e,$d);
$e = array_replace_recursive ($e,$f);
echo json_encode($e);
?>
我得到的输出
{ “×”:{ “2015”:{ “S”: “XXXXXX”, “d”:1}, “2016”:{ “S”: “YYYYYYYYY”}, “2017”:{ “d”:3 }, “2018”:{ “S”: “sssssss”, “d”:22}, “2019”:{ “S”: “ddddddddddddd”, “d”:21}, “2020”:{ “S” : “FFFFFFFF”, “d”:52}}}
德尔>
编辑:抱歉,array_replace_recursive给出了正确的结果。我在phpfiddle.org模拟中做错了什么......
答案 0 :(得分:0)
我不相信你。我甚至已经执行了您的代码(使用array_replace_recursive
)并得到以下结果:
{
"x": {
"2015": {
"s": "xxxxxx",
"d": 1
},
"2014": {
"s": "yyyyyyyyy",
"d": 3
},
"2013": {
"s": "sssssss",
"d": 22
},
"2012": {
"s": "ddddddddddddd",
"d": 21
},
"2011": {
"s": "ffffffff",
"d": 52
}
}
}
你可能做了别的什么吗?
是的,array_merge_recursive
在这种情况下不是一个选项。