2016-03-25 24 views
2

我有兩個陣列$array1$array2,我得到動態和模樣比較兩個多維數組的值,然後插入如果不退出

$array1 = Array 
    (
     [0] => Array 
      (
       [hour] => 10 
       [activity] => Array 
        (
         [0] => Array 
          (
           [activity_id] => 1 
           [cnt] => 2 
          ) 
         [1] => Array 
          (
           [activity_id] => 2 
           [cnt] => 1 
          ) 
        ) 
      ) 
     [1] => Array 
      (
       [hour] => 11 
       [activity] => Array 
        (
        ) 
      ) 
     [2] => Array 
      (
       [hour] => 12 
       [percentage] => 0 
       [activity] => Array 
        (
         [0] => Array 
          (
           [activity_id] => 2 
           [cnt] => 5 
          ) 
         [1] => Array 
          (
           [activity_id] => 3 
           [cnt] => 2 
          ) 
        ) 
      ) 
    ); 


$array2 = Array 
    (
     [0] => Array 
      (
       [id] => 1 
       [name] => Phone Calls 
       [readable] => 1 
       [status] => active 
      ) 
     [1] => Array 
      (
       [id] => 2 
       [name] => Meeting With Customer 
       [readable] => 1 
       [status] => active 
      ) 
     [2] => Array 
      (
       [id] => 3 
       [name] => Others Works 
       [readable] => 1 
       [status] => active 
      ) 
    ); 

,我需要比較。

如果$array2['id']不在$array1["activity"](即「activity_id」)將數組['activity_id'=>$array2['id'],'cnt'=>0]添加到$array1['activity']

我的結果必須像

$result = Array 
    (
     [0] => Array 
      (
       [hour] => 10 
       [activity] => Array 
        (
         [0] => Array 
          (
           [activity_id] => 1 
           [cnt] => 2 
          ) 
         [1] => Array 
          (
           [activity_id] => 2 
           [cnt] => 1 
          ) 
         [2] => Array 
          (
           [activity_id] => 3 
           [cnt] => 0 
          ) 
        ) 
      ) 
     [1] => Array 
      (
       [hour] => 11 
       [activity] => Array 
        (
         [0] => Array 
          (
           [activity_id] => 1 
           [cnt] => 0 
          ) 
         [1] => Array 
          (
           [activity_id] => 2 
           [cnt] => 0 
          ) 
         [2] => Array 
          (
           [activity_id] => 3 
           [cnt] => 0 
          ) 
        ) 
      ) 
     [2] => Array 
      (
       [hour] => 12 
       [percentage] => 0 
       [activity] => Array 
        (
         [0] => Array 
          (
           [activity_id] => 1 
           [cnt] => 0 
          ) 
         [1] => Array 
          (
           [activity_id] => 2 
           [cnt] => 5 
          ) 
         [2] => Array 
          (
           [activity_id] => 3 
           [cnt] => 2 
          ) 
        ) 
      ) 
    ); 

我曾嘗試是

$finalArray = array(); 
foreach($array1 as $arr1) { 
    foreach($array2 as $arr2) { 
     if(!in_array($arr2['id'], $arr1['activity'])) { 
      $array = ['activity_id'=>$arr2['id'], 'cnt'=>0]; 
     } 
     array_push($arr1['activity'], $array); 
     unset($array); 
    } 
    array_push($finalArray, $result); 
} 
print_r($finalArray); 

in_array()功能無法正常工作,因爲我除外或者我試圖做到這一點在錯誤的道路。有人可以幫助我嗎?

+0

如果我理解正確的代碼,你想知道什麼是如果第一個陣列(而非價值)存在索引。在這種情況下,你需要的是:http://php.net/manual/fr/function.array-key-exists.php。讓我們知道我是否正確。 –

+0

感謝您的關注。您可以在$ result數組中看到$ result [0] [activity]添加了[2] =>數組 ( [activity_id] => 3 [cnt] => 0 )你會看到我的工作數組和$結果數組可能是你很容易理解的。$ result array是我需要的輸出。 –

+0

我的意思是:你的目標是匹配你的'$ arr1 ['activity']'數組中的一個鍵還是一個值? –

回答

0

對不起,最後我得到了我做錯了什麼。可能會有人得到幫助。

一切正常只是改變行

if(!in_array($arr2['id'], $arr1['activity'])) { 

if(!in_array($readActivity['id'], array_column($result['activity'],'activity_id'))){