结合多维数组

时间:2015-11-03 11:35:58

标签: php

我找到了几个帖子,但没有一个是有效的。尝试了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模拟中做错了什么......

1 个答案:

答案 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在这种情况下不是一个选项。