【问题标题】:Remove the top level array and merge sub array into one移除顶层数组并将子数组合并为一个
【发布时间】:2017-02-02 06:17:31
【问题描述】:

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

 $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 );但不工作。

请提出任何明智的方法来做到这一点。

谢谢

【问题讨论】:

  • 检查我的编辑部分的排序功能

标签: php arrays sorting multidimensional-array


【解决方案1】:

你可以尝试这样简单的方法,

     $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);

【讨论】:

  • 谢谢兄弟#rahul_m
猜你喜欢
  • 2021-07-16
  • 1970-01-01
  • 1970-01-01
  • 2020-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-25
  • 2017-06-17
相关资源
最近更新 更多