Entendendo a Função array_reverse() do PHP
Em PHP, a função array_reverse() inverte a ordem dos elementos de um array. Saiba sobre sintaxe, chaves e o parâmetro $preserve_keys.
A função array_reverse() do PHP retorna um novo array com os elementos do array fornecido em ordem inversa. É uma função nativa (sem necessidade de extensão) e funciona tanto com arrays indexados quanto com arrays associativos. É a ferramenta ideal quando você precisa de uma visão "do último ao primeiro" dos dados — por exemplo, exibir os comentários mais recentes primeiro, percorrer uma lista de trás para frente ou desfazer uma ordenação.
Esta página aborda a sintaxe, como as chaves são tratadas, o sinalizador $preserve_keys e os erros mais comuns.
Sintaxe
array_reverse(array $array, bool $preserve_keys = false): array| Parâmetro | Obrigatório | Descrição |
|---|---|---|
$array | Sim | O array a ser invertido. |
$preserve_keys | Não | Se true, as chaves numéricas são mantidas associadas aos seus valores em vez de serem renumeradas. As chaves string são sempre preservadas, independentemente deste sinalizador. O padrão é false. |
A função retorna um novo array; o original nunca é modificado.
Como a Função array_reverse() do PHP Funciona?
array_reverse() percorre o array de entrada do último elemento ao primeiro e constrói um novo array nessa ordem. Por padrão, as chaves inteiras são renumeradas a partir de 0, enquanto as chaves string são mantidas como estão. Defina $preserve_keys como true quando precisar que as chaves numéricas originais permaneçam associadas aos seus valores.
Aqui está o caso mais simples — inverter um array indexado:
Exemplo PHP de uso da função array_reverse
Saída:
Array
(
[0] => cherry
[1] => banana
[2] => apple
)Como podemos ver, a ordem dos elementos no $reversed_array é o inverso da ordem dos elementos no $original_array.
Usando a Função array_reverse() do PHP com Arrays Associativos
Como mencionado anteriormente, a função array_reverse() também pode ser usada com arrays associativos. Quando utilizada com arrays associativos, a ordem dos elementos é invertida, mas as chaves string permanecem inalteradas por padrão.
Aqui está um exemplo de como a função array_reverse() pode ser usada com um array associativo:
Exemplo PHP de como a função array_reverse() pode ser usada com um array associativo
Saída:
Array
(
[c] => cherry
[b] => banana
[a] => apple
)Como podemos ver, as chaves dos elementos no $reversed_array ainda correspondem às chaves originais, mas a ordem dos elementos está invertida. As chaves string são sempre preservadas, portanto o sinalizador $preserve_keys não faz diferença aqui.
Preservando Chaves Numéricas
Para arrays indexados (chaves numéricas), array_reverse() renumera as chaves a partir de 0 por padrão. Geralmente é isso que você quer, mas às vezes o índice original tem significado — um número de linha, uma posição, um ID. Passe true como segundo argumento para manter essas chaves associadas aos seus valores:
Exemplo PHP de preservação de chaves numéricas com array_reverse()
<?php
$data = array(10 => "ten", 20 => "twenty", 30 => "thirty");
// Default: numeric keys are renumbered from 0
print_r(array_reverse($data));
// preserve_keys = true: original numeric keys are kept
print_r(array_reverse($data, true));
?>Saída:
Array
(
[0] => thirty
[1] => twenty
[2] => ten
)
Array
(
[30] => thirty
[20] => twenty
[10] => ten
)No primeiro array, os valores são invertidos mas as chaves são redefinidas; no segundo, as chaves 30, 20 e 10 acompanham seus valores.
Erros Comuns
- Não modifica o array original.
array_reverse($arr)retorna um novo array — não inverte$arrno lugar. Sempre capture o valor de retorno:$arr = array_reverse($arr);. - Não é uma ordenação. Inverter apenas vira a ordem atual. Para obter ordem decrescente, ordene primeiro (por exemplo, com
rsort()ouarsort()) em vez de inverter. - Chaves string ignoram
$preserve_keys. O sinalizador afeta apenas chaves inteiras; as chaves string são mantidas de qualquer forma. - Invertendo uma string.
array_reverse()funciona apenas com arrays. Para inverter uma string, usestrrev().
Funções Relacionadas
array_slice()— extrai uma parte de um array.array_merge()— combina arrays.rsort()— ordena um array em ordem decrescente.krsort()— ordena um array associativo por chave em ordem inversa.strrev()— inverte uma string.
Conclusão
Em conclusão, a função array_reverse() é uma função poderosa e versátil que permite inverter facilmente a ordem dos elementos em um array. Seja trabalhando com arrays indexados ou associativos, a função array_reverse() pode ajudá-lo a manipular seus arrays da forma que você precisa. Com sua sintaxe simples e comportamento direto, a função array_reverse() é uma ferramenta essencial para qualquer programador PHP que trabalha com arrays.