Bir çok boyutlu dizinin elemanları eşleştirme

2 Cevap php

Ben aşağıdaki gibi PHP iki dizileri yaşıyorum:

 Array1 ( [1] => Array ( [0] => 16 ) 
          [2] => Array ( [0] => 17 [1] => 29 ) 
          [3] => Array ( [0] => 30 [1] => 31 ) 
        ) Total Element Count: 5

 Array2 ( [1] => Array ( [0] => 21 )
          [2] => Array ( [0] => 22 ) 
          [3] => Array ( [0] => 23 ) 
          [4] => Array ( [0] => 24 [1] => 25 )
          [5] => Array ( [0] => 43 [1] => 44 )  
        ) Total Element Count: 7

Ben ilk dizinin sayısı bağlı olarak iki dizide yukarıda eşleştirmek istediğiniz anlamına gelir, array2 ilk beş element dış 1D tuşları sağlam kalan dizi1 ile karıştırılır almalısınız.

Aşağıdaki gibi çıktı olmalıdır:

 Output Array( [1] => Array ( [0] => 16 [1] => 21) 
               [2] => Array ( [0] => 17 [1] => 29 [2] => 22) 
               [3] => Array ( [0] => 30 [1] => 31 [2] => 23 )
               [4] => Array ( [0] => 24 [1] => 25 ) 

)

2 Cevap

: Eğer E_STRICT uyarıları önlemek istiyorsanız

function combine(array $arr1, array $arr2) {
  $ret = array();
  foreach ($arr1 as $k => $v) {
    if (!array_key_exists($k, $ret)) {
      $ret[$k] = array();
    }
    $ret[$k][] = $v;
  }
  foreach ($arr2 as $k => $v) {
    if (!array_key_exists($k, $ret)) {
      $ret[$k] = array();
    }
    $ret[$k][] = $v;
  }
  return $ret;
}

Eğer kısa bir versiyonunu tercih ederseniz:

function combine(array $arr1, array $arr2) {
  $ret = array();
  foreach ($arr1 as $k => $v) {
    $ret[$k][] = $v;
  }
  foreach ($arr2 as $k => $v) {
    $ret[$k][] = $v;
  }
  return $ret;
}