2016-03-25 25 views
2

çıkar değilse iki dizi $array1 ve ben dinamik olsun $array2 var ve karşılaştırmak gerekiriki boyutlu bir dizinin değerlerini karşılaştırın ve

$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 
      ) 
    ); 

benziyor yerleştirin. $array2['id'] halinde

$array1['activity'] için dizi ['activity_id'=>$array2['id'],'cnt'=>0] eklemek (yani "activity_id") $array1["activity"] değildir. Ne ben denedim ben hariç gibi çalışmıyor

$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() fonksiyonudur ya da yanlış bir şekilde yapmaya çalışıyorum

$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 
          ) 
        ) 
      ) 
    ); 

gibi

Benim sonuç olmalıdır. Birisi bana bu konuda yardımcı olabilir mi?

+0

konusunda çizgiyi

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

değiştirmek tamam . Bu durumda, ihtiyacınız olan şey: http://php.net/manual/fr/function.array-key-exists.php. Haklıysam tanışalım. –

+0

İlginiz için teşekkür ederiz. $ Sonuç dizisinde görebilirsiniz $ sonuç [0] [etkinlik] eklendi [2] => Dizi ( [activity_id] => 3 [cnt] => 0 ). benim çalışma dizimi ve $ sonuç dizisinin anlamanız sizin için kolay olabileceğini görüyorsunuz. $ sonuç dizisi ihtiyacım olan çıktı. –

+0

Demek istediğim: Amacınız $ arr1 ['activity'] 'dizisinde veya bir değerindeki bir anahtarla eşleşiyor mu? –

cevap

0

Üzgünüz, sonunda neyi yanlış yaptığımı anladım. Birisi yardım olsun.

her şey doğru size kodu anlamak endeksi ilk dizinin (değil değer) varsa sadece ne bilmeni istiyorum olduğunu

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