W3docs

Entendendo a função end() de array do PHP

Aprenda como usar a função end() do PHP para retornar o último valor de um array, como ela move o ponteiro interno e como evitar armadilhas comuns.

Em PHP, arrays são um dos tipos de dados mais usados. Arrays podem armazenar uma coleção de dados em uma única variável, que pode ser manipulada e iterada facilmente. Uma das funções disponíveis para manipular arrays é a função end().

Em sua forma mais simples, a função end() retorna o último valor de um array. Internamente, ela também move o ponteiro interno do array para o último elemento — um detalhe que a maioria das pessoas ignora. Neste artigo, abordaremos a sintaxe da função end(), como ela funciona na prática, como interage com o ponteiro interno e as armadilhas comuns — arrays vazios e arrays associativos — que costumam surpreender os desenvolvedores.

Sintaxe

A sintaxe da função end() é direta:

end(array &$array): mixed

Onde $array é o array cujo último elemento queremos retornar. Dois pontos merecem destaque:

  • O array é passado por referência (&$array) porque end() modifica o ponteiro interno do array. Por isso, você deve passar uma variável real, não uma expressão inline como end([1, 2, 3]) — isso emite um aviso em versões antigas do PHP e um erro fatal no PHP 8.1+.
  • O tipo de retorno é mixed: retorna o valor do último elemento, ou false se o array estiver vazio.

Uso

Vamos examinar mais de perto como a função end() funciona na prática. Considere o seguinte array:

Um Array PHP

$fruits = array('apple', 'banana', 'cherry');

Para recuperar o último elemento deste array usando end(), usaríamos o seguinte código:

php— editable, runs on the server

Após executar este código, $last_fruit conteria a string 'cherry'.

Modificando o Ponteiro do Array

Todo array PHP mantém um ponteiro interno que rastreia uma posição "atual". Chamar end() move esse ponteiro para o último elemento. As outras funções de ponteiro também o movem: reset() volta para o primeiro elemento, next() avança um passo, prev() recua um passo, e current() lê o elemento na posição atual do ponteiro sem movê-lo.

Como end() deixa o ponteiro no último elemento, chamar current() logo após retorna esse mesmo último valor:

<?php

$fruits = ['apple', 'banana', 'cherry'];

end($fruits);
echo current($fruits);

Este código produzirá a seguinte saída:

cherry

Se você precisar iterar sobre um array em ordem inversa, não tente fazer isso chamando end() repetidamente — o ponteiro nunca avança além do último elemento, então um loop controlado por end() nunca terminaria. Em vez disso, use array_reverse() (ou um loop for indexado padrão contando de count($array) - 1 para baixo):

<?php

$fruits = ['apple', 'banana', 'cherry'];

foreach (array_reverse($fruits) as $fruit) {
    echo $fruit . "<br>";
}

Este código produzirá a seguinte saída:

cherry
banana
apple

Armadilhas Comuns

Há algumas armadilhas comuns a ter em mente ao usar a função end():

Arrays Vazios

Se o array passado para end() estiver vazio, a função retorna false. Isso é ambíguo: false também é um valor legítimo que um array não vazio pode conter, então uma verificação simples pode dar a resposta errada.

php— editable, runs on the server

Para estar seguro, verifique primeiro se o array está vazio (com empty() ou count()), ou use a comparação estrita !== false:

php— editable, runs on the server

Arrays Associativos

A função end() sempre retorna o valor do último elemento, independentemente de o array ser indexado ou associativo:

php— editable, runs on the server

Se você precisar recuperar a última chave de um array associativo, use a função array_key_last() em vez disso:

php— editable, runs on the server

end() vs array_pop()

Um ponto de confusão comum é a diferença entre end() e array_pop(). Ambos fornecem o último elemento, mas:

  • end() o último valor e deixa o array intacto (apenas move o ponteiro interno).
  • array_pop() remove o último elemento e o retorna, reduzindo o array em um.

Use end() quando quiser apenas verificar o último valor; use array_pop() quando realmente quiser removê-lo do array.

Funções relacionadas

A função end() faz parte da família de funções de ponteiro interno do PHP. Estes capítulos cobrem o restante:

  • reset() — move o ponteiro para o primeiro elemento e o retorna.
  • current() — lê o elemento na posição atual do ponteiro.
  • next() — avança o ponteiro e retorna o próximo elemento.
  • prev() — recua o ponteiro e retorna o elemento anterior.
  • array_reverse() — obtém uma cópia invertida do array para iteração reversa limpa.
  • array_pop() — remove e retorna o último elemento.

Conclusão

Neste artigo, examinamos detalhadamente a função end() em PHP, incluindo sua sintaxe, uso e armadilhas comuns. Embora possa parecer uma função simples, há nuances importantes a considerar ao usá-la. Ao entender como end() funciona, você pode evitar erros comuns e usar esta função em todo o seu potencial no seu código PHP.

Diagrama

Aqui está um diagrama para ilustrar o uso da função end():

graph TD
A[Array] --> B(end())
B --> C{Check result}
C --> |True| D(Return last element)
C --> |False| E(Handle empty array)

Prática

Prática
Qual é o propósito da função end() em PHP?
Qual é o propósito da função end() em PHP?
Was this page helpful?