2011-01-22 100 views
5

我有兩個數組,每個不同的計數的,我的工作的例子是有一個和其他136 132,結合2個陣列不同長度

我需要array_combine()他們(讓第一一個是關鍵,第二個是價值)。在我的例子中,我想保留132個鍵/值對,並刪除沒有相應匹配的額外4個。

目前我有這個功能(這是我對array_combine() php.net的文檔中找到),但它不工作:

function array_combine2($arr1, $arr2) { 
      $count1 = count($arr1); 
      $count2 = count($arr2); 
      $numofloops = $count2/$count1; 

      $i = 0; 
      while($i < $numofloops){ 
       $arr3 = array_slice($arr2, $count1*$i, $count1); 
       $arr4[] = array_combine($arr1,$arr3); 
       $i++; 
      } 

      return $arr4; 
    } 

我不斷收到回

警告:array_combine ()[function.array-combine]:兩個參數 應具有相同數量的行上以 開頭的元素$ arr4 [] = ...

任何意見將有所幫助,

謝謝!

回答

11
function array_combine2($arr1, $arr2) { 
    $count = min(count($arr1), count($arr2)); 
    return array_combine(array_slice($arr1, 0, $count), array_slice($arr2, 0, $count)); 
} 
+0

救了我一次完美的解決方案 – 2017-12-11 09:56:17

-2

這裏是在PHP本身完善的功能叫做 「array_combine()」

/*----------------------------------------------------------- 
    | Parameter   | Description      | 
    ------------------------------------------------------------- 
    | array1 Required. | An array, specifying the keys  | 
    ------------------------------------------------------------- 
    | array2 Required. | An array, specifying the values  | 
    -----------------------------------------------------------*/ 

$array1 = ('John','Mark','Ester'); 
$array2 = (1111,2222); 

// if some elements dont exists, "add" them... 
if(count($array1) != count($array2)) 
{ 
    foreach($array as $key => $value): 
     if(!isset($array2[$key]) $array2[$key] = NULL; 
    endforeach; 
} 

// now, combine them in classic way... 
$combined = array_combine($array1,$array2); 
7

這裏是一個班輪:

$res = array_combine(array_intersect_key($arr1, $arr2), array_intersect_key($arr2, $arr1));