W3docs

current()

A função current() em PHP retorna o valor do elemento apontado pelo ponteiro interno de um array sem movê-lo.

Introdução

Todo array em PHP possui um ponteiro interno — um cursor oculto que marca um elemento como o "atual". A função current() lê o valor nesse cursor sem movê-lo. Isso faz de current() a metade de leitura do kit de travessia manual de arrays do PHP, a contraparte das funções de navegação next(), prev(), reset() e end().

Este capítulo explica exatamente o que é o ponteiro interno, como current() se comporta nas bordas de um array e as armadilhas que vale conhecer antes de utilizá-la.

O que é a Função current() em PHP?

current() retorna o valor do elemento em que o ponteiro interno do array está posicionado no momento. Ela não avança o ponteiro, portanto chamá-la repetidamente retorna o mesmo valor até que algo mova o cursor.

Quando um array novo é criado, o ponteiro começa no primeiro elemento. As funções que o movem são:

  • next() — avança um elemento à frente e retorna esse valor.
  • prev() — recua um elemento e retorna esse valor.
  • reset() — salta para o primeiro elemento.
  • end() — salta para o último elemento.

current() é a única dessas que lê sem mover o ponteiro.

Sintaxe da Função current()

current(array $array): mixed

Ela recebe um único argumento — o array a inspecionar — e retorna o valor na posição atual do ponteiro, ou false se o array estiver vazio ou o ponteiro tiver ultrapassado o último elemento.

Atenção: Como current() retorna false no fim de um array, não é possível usá-la para detectar o fim de um array que legitimamente contenha um valor false. Use key(), que retorna null além do fim, quando precisar de uma verificação confiável de fim de array.

Exemplo Básico

php— editable, runs on the server

O ponteiro começa no primeiro elemento, então isto imprime apple. Chame current() mais dez vezes e você ainda receberá apple — nada moveu o cursor.

Movendo o Ponteiro com next() e prev()

current() se torna útil em combinação com as funções de navegação. Cada uma reposiciona o cursor, e current() (ou o valor que a própria função retorna) indica onde você chegou.

<?php

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

echo current($fruits) . "\n"; // apple  (pointer at index 0)
next($fruits);
echo current($fruits) . "\n"; // banana (pointer at index 1)
next($fruits);
echo current($fruits) . "\n"; // cherry (pointer at index 2)
prev($fruits);
echo current($fruits) . "\n"; // banana (pointer back at index 1)
reset($fruits);
echo current($fruits) . "\n"; // apple  (pointer reset to start)

A saída é:

apple
banana
cherry
banana
apple

O que Acontece no Final do Array

Avance o ponteiro além do último elemento e current() retorna false:

<?php

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

end($fruits);                       // pointer on the last element
echo current($fruits) . "\n";       // cherry
next($fruits);                      // step beyond the last element
var_dump(current($fruits));         // bool(false)

Isso imprime:

cherry
bool(false)

É por isso que a atenção acima é importante: um false retornado por current() pode significar "além do fim" ou "o valor do elemento realmente é false."

current() e foreach

Uma surpresa comum: foreach itera sobre um array sem usar ou mover seu ponteiro interno. Portanto, current() não é afetada por um laço foreach e ainda reflete o que as funções de movimentação do ponteiro definiram por último.

<?php

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

foreach ($fruits as $fruit) {
    // looping does not touch the internal pointer
}

echo current($fruits); // apple — still at the start

Isso imprime apple, não false. Se você quiser controle manual sobre a posição, use next()/current(); se quiser apenas percorrer todos os elementos, use foreach.

Quando Usar current()

Use current() quando precisar de uma travessia com estado por um array — uma em que você avança o cursor ao longo de várias chamadas de função ou iterações de laço e precisa inspecionar o elemento ativo. Casos típicos:

  • Processar um array no estilo fila enquanto alterna entre next() e prev().
  • Ler o primeiro elemento de forma eficiente: current($array) retorna o primeiro valor sem precisar de sua chave.
  • Implementar um cursor personalizado sobre um conjunto de dados.

Para iteração cotidiana, prefira foreach — é mais claro e imune a surpresas com ponteiros.

Conclusão

current() lê o valor no ponteiro interno de um array sem movê-lo, tornando-a a metade de leitura do conjunto de travessia manual do PHP junto com next(), prev(), reset() e end(). Lembre-se de suas duas particularidades: ela retorna o mesmo valor até que algo mova o cursor, e retorna false além do fim do array — portanto, use key() quando precisar detectar o fim de forma confiável.

Prática

Prática
O que a função current() em PHP faz?
O que a função current() em PHP faz?
Was this page helpful?