2011-01-22 16 views
5

私は2つのアレイ、異なる数のそれぞれを持っているを組み合わせ、私が働いている例は1、その他で136 132がありますされ、は異なる長さの2つの配列

私は(それらをarray_combine()する必要がある最初のを作ります1つはキー、2つ目は値)。私の例では、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

は私の時間完璧なソリューションを保存 –

-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)); 
関連する問題