将多个数组合并为一个具有相同日期的数组

时间:2018-06-21 11:10:45

标签: php arrays

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

["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
    }
 }

目前,我正在写三个数组的值,但是可能有七个或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;
}

非常感谢您的努力

1 个答案:

答案 0 :(得分:0)

您需要使用array_merge函数。

示例:

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