删除顶级数组并将子数组合并为一个

时间:2017-02-02 06:17:32

标签: php arrays sorting multidimensional-array

我有一个多维数组,我想删除顶级数组并将其所有子数组合并到一个数组中。 下面是我的数组:

 $arr =   [KEY1] => Array
          (
            [0] => Array
                (
                    [Feb] =>  120
                )

            [1] => Array
                (
                    [Jan] =>  230
                )
            [3] => Array
                (
                    [Mar] =>  340
                )

         )

         [KEY2] => Array
         (
            [0] => Array
                (
                    [Feb] =>  12
                )

            [1] => Array
                (
                    [Jan] =>  23
                )
            [3] => Array
                (
                    [Mar] =>  34
                )
         )

我需要安排和排序这个数组如下:
输出:

[KEY1] => Array
                (
                    [Jan] =>  230,
                    [Feb] =>  120,
                    [Mar] =>  340
                )
[KEY2] => Array
                (
                    [Jan] =>  23,
                    [Feb] =>  12,
                    [Mar] =>  34
                )

我用过

call_user_func_array('array_merge',$ arr);但没有工作。

请建议任何明智的方法来做到这一点。

由于

1 个答案:

答案 0 :(得分:2)

你可以这样简单地尝试,

     $arr = [
      'key1' =>[
          0 => ["feb" => 123],
          1 => ["dev" => 213],
          2 => ["jan" => 111],
      ],
      'key2' =>[
          0 => ["feb" => 132],
          1 => ["dev" => 321],
          2 => ["jan" => 555],
      ],
      ];
      $result = [];
      foreach($arr as $k => $v){
          foreach($v as $k1 => $v1){
              foreach($v1 as $k2 => $v2)
              $result[$k][$k2] = $v2;
          }
      }
      print_r($result);

希望这能解决您的问题。

修改

这是你的排序功能。

function sortNestedArray(&$a)
{
    sort($a);
    for ($i = 0; $i < count($a); $i++) {
        if (is_array($a[$i])) {
            sortNestedArray($a[$i]);
        }
    }
    return $a;
}
$a = sortNestedArray($result);
print_r($a);