2017-07-18 97 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值構建所需的數組。 –