2008-10-02 12 views
21

Tengo dos matrices del mismo tamaño. Me gustaría combinar los dos para que los valores de uno sean los índices clave de la nueva matriz y los valores de la nueva matriz sean los valores de la otra.Combinar dos matrices como pares clave de valor en PHP

En este momento estoy simplemente recorriendo las matrices y creando la nueva matriz manualmente, pero tengo la sensación de que hay una forma mucho más elegante de hacerlo. No veo ninguna función de matriz para este propósito, pero tal vez me perdí algo? ¿Hay una forma simple de hacerlo en esta línea?

$mapped_array = mapkeys($array_with_keys, $array_with_values); 

Respuesta

50

Ver array_combine() en PHP.net.

+3

Guau, supongo que es solo una de esas mañanas, ¿cómo extrañé esto? ¡Perfecto, gracias! –

10

(a partir de los documentos de fácil lectura)

array_combine - Crea una matriz mediante el uso de una matriz para las claves y otra para sus valores

Descripción

array array_combine (array $keys , array $values)

Crea una matriz utilizando los valores de la matriz de claves como claves y los valores de la matriz de valores como los valores correspondientes.

Parámetros

teclas - matriz de claves que se utilizarán. Los valores ilegales para la clave se convertirán en cadena.

valores - Matriz de valores a utilizar

Ejemplo

<?php 
$a = array('green', 'red', 'yellow'); 
$b = array('avocado', 'apple', 'banana'); 
$c = array_combine($a, $b); 

print_r($c); 
?> 

El resultado del ejemplo sería:

Array 
(
    [green] => avocado 
    [red] => apple 
    [yellow] => banana 
) 
4

Esto debe hacer el truco

function array_merge_keys($ray1, $ray2) { 
    $keys = array_merge(array_keys($ray1), array_keys($ray2)); 
    $vals = array_merge($ray1, $ray2); 
    return array_combine($keys, $vals); 
} 
Cuestiones relacionadas