W3docs

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

php— editable, runs on the server

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_flip pode 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 => id para id => 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 int ou string não podem se tornar chaves. Eles emitem Warning: Can only flip string and integer values e 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 inteiro 42.

Funções Relacionadas

  • array_reverse() — inverte a ordem dos elementos (frequentemente confundido com a inversão de chaves/valores).
  • array_keys() e array_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.

Prática

Prática
Qual é a função de array_flip() no PHP?
Qual é a função de array_flip() no PHP?
Was this page helpful?