freeCodeCamp/guide/portuguese/php/loops/for-loop/index.md

76 lines
2.3 KiB
Markdown
Raw Normal View History

---
title: For Loop
localeTitle: Para loop
---
## Para loop
O PHP `for` instrução consiste em três expressões e uma instrução:
`for ((initialization); (condition); (final-expression)) statement`
### Descrição
* inicialização
* Corra antes da primeira execução no loop.
* Esta expressão é comumente usada para criar contadores.
* As variáveis criadas aqui estão no escopo do loop. Uma vez que o loop tenha terminado, a execução é destruída.
* condição
* Expressão que é verificada antes da execução de cada iteração.
* Se omitido, esta expressão será avaliada como `true` .
* expressão final
* Expressão executada após cada iteração.
* Geralmente usado para incrementar um contador.
* Mas pode ser usado para executar qualquer expressão.
* declaração
* Código a ser repetido em cada iteração de loop.
Qualquer uma dessas três expressões ou a declaração pode ser omitida.
As expressões podem conter várias expressões separadas por vírgula.
Na expressão (condição), todas as expressões separadas por vírgulas serão avaliadas.
O resultado é obtido a partir do último.
For loops são comumente usados para contar um certo número de iterações para repetir uma instrução.
### Armadilhas Comuns
#### Ultrapassando os limites de um array
Ao indexar em um array muitas vezes é fácil exceder os limites do array (ex. Tentar referenciar o 4º elemento de um array de 3 elementos).
```php
// This will cause an error.
// The bounds of the array will be exceeded.
$arr = array(1,2,3);
for ($i = 0; $i <= count($arr); $i++) {
var_dump($arr[$i]);
}
```
Isto irá produzir:
```txt
int(1) int(2) int(3) NULL
```
Existem maneiras de corrigir esse código.
Defina a condição como `$i < count($arr)` ou `$i <= count($arr) - 1` .
#### Problemas de desempenho
O código acima pode ficar lento, porque o tamanho da matriz é buscado em cada iteração.
Para corrigir esse problema, é possível colocar o tamanho da matriz em uma variável.
```php
//create the $size variable with a second expression comma separated
for ($i = 0, $size = count($arr); $i < $size; ++$i) {
```
### Mais Informações
* [PHP.net - Estruturas de Controle](https://secure.php.net/manual/en/control-structures.for.php)