Comprender la función array_flip de PHP
La función array_flip de PHP intercambia las claves y valores de un array. Aprende sintaxis, casos de uso, duplicados y funciones relacionadas.
La función array_flip de PHP intercambia las claves y los valores de un array: cada clave se convierte en un valor y cada valor se convierte en una clave. Devuelve un array completamente nuevo y nunca modifica el que le pasas. Esta página cubre la sintaxis, un ejemplo ejecutable, cómo se manejan los duplicados y los tipos de claves, los casos de uso comunes y las funciones relacionadas que conviene conocer.
Sintaxis
array_flip(array $array): array$array— el array de entrada. Sus valores deben ser claves válidas, lo que significa que solo pueden ser enteros o strings. Cualquier otro tipo de valor (booleanos, números de punto flotante, arrays, objects,null) genera una advertencia y se omite en el resultado.- Valor de retorno — un nuevo array con los pares clave/valor intercambiados.
Cómo usar la función array_flip de PHP
Pasa tu array a la función y esta devuelve el array con las claves y valores invertidos:
Ejemplo de PHP del uso de la función array_flip
En este ejemplo, $flipped_array contendrá lo siguiente:
Array
(
[1] => a
[2] => b
[3] => c
)Las claves string "a", "b", "c" son ahora los valores, y los enteros 1, 2, 3 son ahora las claves.
Ventajas de usar la función array_flip de PHP
Hay varias ventajas al usar array_flip en tu código PHP. Entre ellas se incluyen:
- Simplificar el código:
array_flippuede ayudar a simplificar el código eliminando la necesidad de intercambiar manualmente las claves y los valores de un array. - Mejorar la legibilidad: los arrays invertidos suelen ser más fáciles de leer y comprender, especialmente cuando se trabaja con arrays grandes o que contienen estructuras de datos complejas.
- Ejecución optimizada:
array_flipes una función integrada optimizada para esta tarea, que generalmente supera en rendimiento a los bucles de intercambio manual de clave-valor.
Construir una tabla de búsqueda rápida
El uso más idiomático de array_flip es convertir una lista de valores en un conjunto que se puede consultar con isset(). Dado que las claves están en forma de hash, una verificación con isset() sobre un array invertido es O(1) — mucho más rápido que recorrer la lista con in_array() en un conjunto de datos grande.
<?php
$allowed = ["admin", "editor", "viewer"];
$lookup = array_flip($allowed);
var_dump(isset($lookup["editor"])); // present
var_dump(isset($lookup["guest"])); // missing
?>Salida:
bool(true)
bool(false)Manejo de valores duplicados
Cuando dos claves en el array original comparten el mismo valor, el resultado invertido solo puede tener una entrada para ese valor — así que gana la última clave y la anterior se descarta:
<?php
$colors = ["red", "green", "blue", "green"];
print_r(array_flip($colors));
?>Salida:
Array
(
[red] => 0
[green] => 3
[blue] => 2
)El índice 1 (el primer "green") se pierde porque el índice 3 lo sobreescribió. Si en cambio necesitas contar cuántas veces aparece cada valor, usa array_count_values(); para eliminar duplicados manteniendo el orden, usa array_unique().
Casos de uso comunes
- Construir conjuntos de búsqueda a partir de una lista de IDs únicos o valores permitidos para verificaciones rápidas con
isset(). - Invertir un diccionario o mapeo (por ejemplo,
nombre => idenid => nombre). - Reorganizar los elementos de un array como claves recordando su posición original.
Limitaciones y consideraciones
- Valores duplicados: solo sobrevive la última clave para un valor repetido; las claves anteriores se pierden (ver más arriba).
- Tipos de valor no válidos: los valores que no sean
intostringno pueden convertirse en claves. EmitenWarning: Can only flip string and integer valuesy se omiten, mientras que los pares válidos sí se invierten. - Claves de string numérico: cuando un valor se convierte en clave, PHP aplica las reglas normales de clave de array — un string numérico como
"42"se convierte en el entero42.
Funciones relacionadas
array_reverse()— invierte el orden de los elementos (a menudo se confunde con el intercambio de claves/valores).array_keys()yarray_values()— extraen solo las claves o solo los valores.array_search()— busca la clave de un único valor sin invertir todo el array.array_combine()— crea un array emparejando un array de claves con un array de valores.
Para profundizar más en los arrays en general, consulta PHP Arrays y Associative Arrays.
Conclusión
array_flip intercambia las claves y los valores de un array en una única llamada optimizada. Brilla cuando necesitas un conjunto de búsqueda rápida con isset() o quieres invertir un mapeo — recuerda que los valores deben ser enteros o strings, y que los valores duplicados se reducen a su última clave.