Entendendo a Função array_flip do PHP
A função array_flip do PHP troca chaves e valores de um array. Saiba sintaxe, exemplos, duplicatas e casos de uso práticos.
A função PHP array_flip troca as chaves e os valores de um array: cada chave se torna um valor, e cada valor se torna uma chave. Ela retorna um array completamente novo e nunca modifica o array que você passou. Esta página cobre a sintaxe, um exemplo executável, como duplicatas e tipos de chaves são tratados, casos de uso comuns e as funções relacionadas que vale conhecer.
Sintaxe
array_flip(array $array): array$array— o array de entrada. Seus valores devem ser chaves válidas, ou seja, só podem ser inteiros ou strings. Qualquer outro tipo de valor (booleans, floats, arrays, objects,null) gera um aviso e é ignorado no resultado.- Valor de retorno — um novo array com os pares chave/valor invertidos.
Como Usar a Função array_flip do PHP
Passe seu array para a função e ela retorna o array invertido:
Exemplo PHP do uso da função array_flip
Neste exemplo, $flipped_array conterá o seguinte:
Array
(
[1] => a
[2] => b
[3] => c
)As chaves string "a", "b", "c" são agora os valores, e os inteiros 1, 2, 3 são agora as chaves.
Benefícios de Usar a Função array_flip do PHP
Existem vários benefícios em usar array_flip no seu código PHP. Entre eles:
- Simplificação do código:
array_flippode ajudar a simplificar seu código, eliminando a necessidade de trocar manualmente chaves e valores em um array. - Melhora da legibilidade: Arrays invertidos geralmente são mais fáceis de ler e entender, especialmente ao trabalhar com arrays grandes ou que contêm estruturas de dados complexas.
- Execução otimizada:
array_flipé uma função integrada otimizada para essa tarefa, geralmente superando loops manuais de troca de chave-valor.
Construindo uma Tabela de Consulta Rápida
O uso mais idiomático de array_flip é transformar uma lista de valores em um conjunto que pode ser verificado com isset(). Como as chaves são hashadas, uma verificação isset() em um array invertido é O(1) — muito mais rápido do que percorrer a lista com in_array() em grandes conjuntos de dados.
<?php
$allowed = ["admin", "editor", "viewer"];
$lookup = array_flip($allowed);
var_dump(isset($lookup["editor"])); // present
var_dump(isset($lookup["guest"])); // missing
?>Saída:
bool(true)
bool(false)Tratando Valores Duplicados
Quando duas chaves no array original compartilham o mesmo valor, o resultado invertido só pode ter uma entrada para aquele valor — portanto, a última chave vence e a anterior é descartada:
<?php
$colors = ["red", "green", "blue", "green"];
print_r(array_flip($colors));
?>Saída:
Array
(
[red] => 0
[green] => 3
[blue] => 2
)O índice 1 (o primeiro "green") é perdido porque o índice 3 o sobrescreveu. Se você precisar contar quantas vezes cada valor ocorre, use array_count_values(); para remover duplicatas mantendo a ordem, use array_unique().
Casos de Uso Comuns
- Construir conjuntos de consulta a partir de uma lista de IDs únicos ou valores permitidos para verificações rápidas com
isset(). - Inverter um dicionário ou mapeamento (ex.:
nome => idparaid => nome). - Reorganizar os elementos de um array como chaves, lembrando sua posição original.
Limitações e Armadilhas
- Valores duplicados: apenas a última chave de um valor repetido sobrevive; chaves anteriores são perdidas (veja acima).
- Tipos de valor inválidos: valores que não são
intoustringnão podem se tornar chaves. Eles emitemWarning: Can only flip string and integer valuese são ignorados, enquanto os pares válidos ainda são invertidos. - Chaves numéricas como string: quando um valor se torna uma chave, o PHP aplica as regras normais de chave de array — uma string numérica como
"42"se torna o inteiro42.
Funções Relacionadas
array_reverse()— inverte a ordem dos elementos (frequentemente confundido com a inversão de chaves/valores).array_keys()earray_values()— extraem apenas as chaves ou apenas os valores.array_search()— encontra a chave de um único valor sem inverter o array inteiro.array_combine()— constrói um array combinando um array de chaves com um array de valores.
Para aprofundar o conhecimento sobre arrays em geral, veja PHP Arrays e Associative Arrays.
Conclusão
array_flip troca as chaves e os valores de um array em uma única chamada otimizada. É ideal quando você precisa de um conjunto de consulta rápida com isset() ou quer inverter um mapeamento — lembre-se apenas de que os valores devem ser inteiros ou strings, e que valores duplicados são reduzidos à sua última chave.