【问题标题】:Merge array and regroup data by date按日期合并数组并重新组合数据
【发布时间】:2020-09-01 15:27:21
【问题描述】:

我有两个多维数组,并希望尽可能按日期对数据进行分组(在 php 中)。我尝试了 merge 和 merge_recursive 但它不起作用。

第一个数组:

array(100) {
  [1]=>
  array(1) {
    ["2020-04-18"]=>
    array(1) {
      ["best_price_product"]=>
      float(489.1)
    }
  }
  [2]=>
  array(1) {
    ["2020-04-19"]=>
    array(1) {
      ["best_price_product"]=>
      float(489.1)
    }
  }
  [3]=>
  array(1) {
    ["2020-04-20"]=>
    array(1) {
      ["best_price_product"]=>
      float(489.1)
    }
  }
  [4]=>
  array(1) {
    ["2020-04-21"]=>
    array(1) {
      ["best_price_product"]=>
      float(489.1)
    }
  }
  ….
  }
  

第二个数组:

  array(88) {
  [1]=>
  array(1) {
    ["2020-04-18"]=>
    array(1) {
      ["best_price_product_mp"]=>
      float(526.3)
    }
  }
  [2]=>
  array(1) {
    ["2020-04-19"]=>
    array(1) {
      ["best_price_product_mp"]=>
      float(526.3)
    }
  }
  [3]=>
  array(1) {
    ["2020-04-20"]=>
    array(1) {
      ["best_price_product_mp"]=>
      float(526.3)
    }
  }
  [4]=>
  array(1) {
    ["2020-05-03"]=>
    array(1) {
      ["best_price_product_mp"]=>
      float(526.3)
    }
  }
...
}
  
  

我希望结果是这样的:

  array(100) {
  [1]=>
  array(2) {
    ["2020-04-18"]=>
    array(2) {
      ["best_price_product"]=>
      float(489.1)
      ["best_price_product_mp"]=>
      float(526.3)
    }
  }
  [2]=>
  array(1) {
    ["2020-04-19"]=>
    array(2) {
      ["best_price_product"]=>
      float(489.1)
      ["best_price_product_mp"]=>
      float(526.3)
    }
  }
  [3]=>
  array(2) {
    ["2020-04-20"]=>
    array(1) {
      ["best_price_product"]=>
      float(489.1)
      ["best_price_product_mp"]=>
      float(526.3)
    }
  }
  [4]=>
  array(1) {
    ["2020-04-21"]=>
    array(2) {
      ["best_price_product"]=>
      float(489.1)
      ["best_price_product_mp"]=>
      float(526.3)
    }
  }
[5]=> 
  array(1) {
    ["2020-05-03"]=>
    array(1) {
      ["best_price_product_mp"]=>
      float(526.3)
    }
  }
  ….
  }

在两个数组的合并中,除了合并的日期之外,还有每个数组中唯一的其他日期。

谢谢

【问题讨论】:

  • 你放弃了吗?

标签: php arrays merge


【解决方案1】:

您可以展平两个数组并将它们合并:

$result = array_merge_recursive(call_user_func_array('array_merge', $a1),
                                call_user_func_array('array_merge', $a2));

结果也会被展平,类似于:

Array
(
    [2020-04-18] => Array
        (
            [best_price_product] => 1
            [best_price_product_mp] => 2
        ),
    [2020-04-19] => Array
        (
            [best_price_product] => 3
            [best_price_product_mp] => 4
        )
)

【讨论】:

  • 感谢您的帮助 :-)
猜你喜欢
  • 1970-01-01
  • 2014-08-22
  • 1970-01-01
  • 2010-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-13
相关资源
最近更新 更多