2011-01-22 23 views
5

Tengo dos conjuntos, cada uno de los diferentes aspectos, el ejemplo que estoy trabajando es que hay 132 en uno y 136 en el otro,Combinar 2 matrices de diferentes longitudes

tengo que array_combine() ellos (hacer la primera una la clave, y la segunda el valor). En mi ejemplo, me gustaría mantener 132 pares clave/valor y soltar los 4 extra que no tienen coincidencia correspondiente.

tengo actualmente esta función (que he encontrado en documentos de php.net de array_combine()), pero no está funcionando:

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; 
    } 

me siguen dando la espalda

Advertencia: array_combine() [function.array-combine]: Ambos parámetros deben tener un número igual de elementos en la línea que comienza con $ arr4 [] = ...

Cualquier consejo ayudaría,

gracias!

Respuesta

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

me salvó la solución perfecta tiempo –

-2

aquí es la función perfecta en sí misma PHP llamado "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

Aquí es una sola línea:

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