首页 > 解决方案 > 将多个数组合并为一个具有相同日期的数组

问题描述

我正在做一个项目,我需要将多个数组组合到一个具有相同日期的数组中。让我给你看一个例子

["first"]=>
{
    [0]=>
    {
      ["date"]=> "Jun 14",
      ["hhp_signed"]=> "0"
    }
}

["second"]=>
 {
    [0]=>
    {
      ["date"]=> "Jun 14",
      ["coupon_purchased"]=> 0
    }
 }

["third"]=>
{
    [0]=>
    {
      ["date"]=> "Jun 14",
      ["user_subscription"]=> "0"
    }
}

这是预期的结果

["final"] => {
    [0] => {
    ["date"]=> "Jun 14",
    ["hhp_signed"] => 0,
    ["coupon_purchased"] => 0,
    ["user_subscription"] => 0
    }
    [1] => {
    ["date"]=> "Jun 15",
    ["hhp_signed"] => 2,
    ["coupon_purchased"] => 5,
    ["user_subscription"] => 0
    }
 }

目前我正在编写三个数组的值,但可能有超过三个数组可能是 7 或 8

我试过这个函数,但它只适用于两个数组,在我的例子中,会有两个以上。

function combo($array1, $array2) {
    $output = array();
    $arrayAB = array_merge($array1, $array2);
    foreach ( $arrayAB as $value ) {
      $id = $value['date'];
      if ( !isset($output[$id]) ) {
        $output[$id] = array();
      }
      $output[$id] = array_merge($output[$id], $value);
    }

    return $output;
}

我真的很感谢你的努力

标签: phparrays

解决方案


你需要使用array_merge功能。

例子:

$final = [];
foreach ($original_array as $value)
{
     $final[$value['date']] = array_merge($final, $value);
}
$final['final'] = $final;  // like your example

推荐阅读