Laravel 5.4 - 关联两个数组

时间:2017-07-18 12:53:11

标签: php arrays laravel

我想"关联"两个数组,我需要结合日期,但要将第二行数据添加到另一个数组。

一个例子将更加明白:

数组1:

  array:2 [▼
  "July 2017" => 2
  "May 2017" => 1
]

数组2:

array:5 [▼
  "April 2017" => 1
  "July 2017" => 1
  "June 2017" => 1
  "March 2016" => 1
  "September 2016" => 1
]

结果:

array [
      ['April 2017', 1, 0],
      ['July 2017', 1, 2],
      ['June 2017', 1, 0],
      ['March 2016', 1, 0],
      ['September 2016', 1, 0],
      ['May 2017', 0, 1]
    ]

所有具有相同名称(和年份)的月份都会合并。数组1中的数据在数组2之后添加。因此它变成数组数组。

但我找不到任何能胜任这项工作的职能。

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

很容易实现。

<?php

$array1 = array(
    "July 2017" => 2,
    "May 2017" => 1
);

$array2 = array(
  "April 2017" => 1,
  "July 2017" => 1,
  "June 2017" => 1,
  "March 2016" => 1,
  "September 2016" => 1
);

$array3 = $array2 + $array1;
$out = array();

foreach( $array3 as $k=>$v )
{
    $out[] = array($k, (isset($array2[$k]) ? $array2[$k]:0), (isset($array1[$k]) ? $array1[$k]:0));
}

print_r( $out );

结果将是:

Array
(
    [0] => Array
        (
            [0] => April 2017
            [1] => 1
            [2] => 0
        )

    [1] => Array
        (
            [0] => July 2017
            [1] => 1
            [2] => 2
        )

    [2] => Array
        (
            [0] => June 2017
            [1] => 1
            [2] => 0
        )

    [3] => Array
        (
            [0] => March 2016
            [1] => 1
            [2] => 0
        )

    [4] => Array
        (
            [0] => September 2016
            [1] => 1
            [2] => 0
        )

    [5] => Array
        (
            [0] => May 2017
            [1] => 0
            [2] => 1
        )

)