2015-11-03 102 views
2

我发现了几个帖子,但都没有工作。尝试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不是一个选项。

+0

哦,该死的..我想在phpfiddle.org上搞砸了一些东西......无论我在改变什么,它都不会改变输出...... – abdfahim