foreach index em PHP: 3 melhores formas em 2025

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: A eterna questão do foreach e seu índice

\n\n

Se você já programou em PHP, certamente já passou por esta situação: precisa não apenas percorrer os elementos de um array, mas também saber o número da iteração atual. Parece simples, não é? Mas é exatamente esta pergunta — "How to find the foreach index?" — que acumula milhares de visualizações no Stack Overflow. E não é à toa!

\n\n

Em 2025, com o PHP continuando a evoluir e os projetos se tornando mais complexos, entender como trabalhar corretamente com índices no loop foreach não é um luxo, mas uma necessidade. Disso dependem a legibilidade do código, seu desempenho e a facilidade de manutenção para seu colega (ou para você mesmo daqui a seis meses).

\n\n

Neste artigo, vamos explorar três formas comprovadas de obter o índice do elemento no foreach, mostrar exemplos reais de código, discutir as armadilhas e dar recomendações que você pode aplicar hoje mesmo. Vamos lá!

\n\n

Método nº1: Usando as chaves do array (o mais elegante)

\n\n

A forma mais simples e "nativa" do PHP é usar a sintaxe foreach ($array as $key => $value). Ela não requer variáveis ou funções extras e funciona com qualquer tipo de array, seja com chaves numéricas ou arrays associativos.

\n\n

Como funciona?

\n

Imagine que você tem um array de usuários:

\n\n
<?php\n$users = ['Alice', 'Bob', 'Charlie', 'Diana'];\n\nforeach ($users as $index => $name) {\n    echo "Usuário #{$index}: {$name}<br>";\n}\n?>
\n\n

O resultado será:

\n
Usuário #0: Alice\nUsuário #1: Bob\nUsuário #2: Charlie\nUsuário #3: Diana
\n\n

Observe: $index não é apenas um contador. É a chave real do array. Se o array tiver chaves não padrão (por exemplo, strings), $index conterá exatamente essas chaves.

\n\n

Quando usar?

\n
    \n
  • Sempre que possível. É a forma mais legível e performática.
  • \n
  • Quando você não precisa reiniciar o contador ou gerenciá-lo manualmente.
  • \n
  • Para qualquer tipo de array: listas ou associativos.
  • \n
\n\n

Armadilha

\n

Se o array tiver "buracos" nos índices (por exemplo, após remover um elemento), $index será igual à chave real, não ao número sequencial. Exemplo:

\n\n
<?php\n$fruits = [0 => 'maçã', 2 => 'banana', 5 => 'cereja'];\n\nforeach ($fruits as $key => $fruit) {\n    echo "Chave: {$key}, fruta: {$fruit}<br>";\n}\n?>
\n\n

Resultado:

\n
Chave: 0, fruta: maçã\nChave: 2, fruta: banana\nChave: 5, fruta: cereja
\n\n

Se você precisa de um número sequencial (0, 1, 2), este método não serve — é preciso usar a segunda opção.

\n\n

Método nº2: Contador manual (flexibilidade e controle)

\n\n

A abordagem clássica é criar uma variável contadora e incrementá-la a cada iteração. Isso dá controle total sobre a numeração.

\n\n

Exemplo básico

\n\n
<?php\n$items = ['livro', 'caneta', 'caderno', 'lápis'];\n$counter = 0;\n\nforeach ($items as $item) {\n    echo "Item #{$counter}: {$item}<br>";\n    $counter++;\n}\n?>
\n\n

Resultado:

\n
Item #0: livro\nItem #1: caneta\nItem #2: caderno\nItem #3: lápis
\n\n

Contador começando em 1

\n

Muitas vezes é necessário exibir a numeração começando em 1 para o usuário. É fácil fazer:

\n\n
<?php\n$tasks = ['Lavar louça', 'Passear com o cachorro', 'Fazer lição de casa'];\n$taskNumber = 1;\n\nforeach ($tasks as $task) {\n    echo "Tarefa nº{$taskNumber}: {$task}<br>";\n    $taskNumber++;\n}\n?>
\n\n

Controle condicional do contador

\n

O contador manual permite pular elementos ou reiniciar a numeração:

\n\n
<?php\n$numbers = [1, 2, 0, 3, 4, 0, 5];\n$v                

Blogs

Book Recommendations