W3docs

Función array_combine de PHP

La función array_combine en PHP combina dos arrays en uno asociativo, usando los valores del primero como claves y los del segundo como valores.

La función array_combine() en PHP combina dos arrays simples en un único array asociativo: toma los valores del primer array como las claves y los valores del segundo array como los valores. Es la herramienta ideal cuando se tienen dos arrays paralelos — por ejemplo, una lista de nombres de columnas y una lista de valores de celda que se corresponden posición a posición — y se desea unirlos en un único mapa clave/valor.

Esta página cubre la sintaxis, el significado de cada parámetro y del valor de retorno, las reglas que se deben seguir (igual longitud, tipos de clave válidos) y los patrones más comunes en el mundo real.

Sintaxis

array_combine(array $keys, array $values): array
ParámetroDescripción
$keysArray cuyos valores se convierten en las claves del resultado. Sus valores deben ser claves de array válidas (enteros o strings).
$valuesArray cuyos valores se convierten en los valores del resultado.

Valor de retorno: un nuevo array asociativo construido emparejando cada elemento de $keys con el elemento de $values en la misma posición.

Desde PHP 8.0, pasar arrays de tamaños diferentes lanza un ValueError. En PHP 7.x y versiones anteriores, la función devolvía false y emitía una advertencia.

Uso básico

El caso de uso clásico es convertir dos arrays paralelos en un único mapa — aquí, nombres de productos emparejados con sus precios.

php— editable, runs on the server

Esto producirá la siguiente salida:

Array
(
    [Product 1] => 10
    [Product 2] => 20
    [Product 3] => 30
)

La combinación se realiza por posición, no por ordenación ni por coincidencia — la primera clave se empareja con el primer valor, la segunda con el segundo, y así sucesivamente.

Construir un registro a partir de encabezados y datos

Un uso práctico frecuente es reconstruir un registro asociativo a partir de una fila de encabezados estilo CSV más una fila de datos. Así es exactamente como se puede mapear una línea de un archivo CSV analizado.

<?php

$headers = array("id", "name", "email");
$row     = array(101, "Ann", "[email protected]");

$record = array_combine($headers, $row);

echo $record["name"] . " <" . $record["email"] . ">";

Esto produce la salida:

Ann <[email protected]>

Reglas y consideraciones

Tenga en cuenta estas restricciones:

  • La longitud igual es obligatoria. $keys y $values deben tener el mismo número de elementos. En PHP 8+, una discrepancia lanza un ValueError; protéjase con count($keys) === count($values) si las longitudes no se conocen de antemano.
  • Las claves deben ser válidas. Los valores usados como claves deben ser enteros o strings. Los flotantes se truncan a enteros, los boolean se convierten a 0/1, y null se convierte en el string vacío "".
  • Las claves duplicadas se sobreescriben. Si el array $keys contiene valores repetidos, los pares posteriores sobreescriben a los anteriores, por lo que el resultado puede ser más corto que la entrada. Para obtener primero el conteo de claves únicas, consulte array_unique().
  • Solo se usan los valores. Las claves originales de ambos arrays de entrada se ignoran — solo importan sus valores.

El siguiente ejemplo muestra cómo una clave duplicada colapsa dos entradas en una:

<?php

$keys   = array("a", "b", "a");
$values = array(1, 2, 3);

print_r(array_combine($keys, $values));

El último "a" => 3 sobreescribe al primero, por lo que la salida es:

Array
(
    [a] => 3
    [b] => 2
)

Funciones relacionadas

  • array_merge() — une arrays añadiendo valores en lugar de emparejar claves con valores.
  • array_flip() — intercambia las claves y los valores de un único array.
  • array_keys() y array_values() — la operación inversa: extrae las claves o los valores de un array asociativo.

Conclusión

array_combine() es la forma más limpia de unir dos arrays paralelos en un array asociativo, emparejándolos elemento a elemento. Recuerde las dos reglas que más confunden: los arrays deben tener la misma longitud (de lo contrario, un ValueError en PHP 8+), y las claves duplicadas se sobreescriben silenciosamente entre sí.

Práctica

Práctica
¿Cuál es la función principal de array_combine() en PHP?
¿Cuál es la función principal de array_combine() en PHP?
Was this page helpful?