2017-07-18 38 views
-2

我想“关联”两个数组,我需要合并日期但将第二行数据添加到另一个数组。Laravel 5.4 - 关联两个数组

个例将更加understable:

阵列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之后添加。因此它变成了一个数组数组。

但是我找不到任何执行此项工作的功能。

谢谢你的帮助!

+2

你尝试过什么到现在? https://stackoverflow.com/help/how-to-ask – JohnWayne

+0

我发现'array_merge'之类的东西,但它是一个加法,我需要一个多一个简单的加法 – TuxxyDOS

+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 
     ) 

) 
+0

对你来说容易;)无论如何,它的工作表示感谢!如果你有时间来解释什么发生在我会感兴趣的foreach – TuxxyDOS

+0

那么,$ array3在当前任务中是相当不需要的,但它所用的全部因为是得到$ array1和$ array2的总数组键,没有更多(我知道,我知道,这是肮脏的解决方案) 然后,foreach代码只是基于$ array1值和$ array2值构建所需的数组。 –