PHP 8.3.4 Released!

do-while

(PHP 4, PHP 5, PHP 7, PHP 8)

Os laços do-while é muito similar aos laços while, com exceção que a expressão de avaliação é verificada ao final de cada iteração em vez de no começo. A maior diferença para o laço while é que a primeira iteração do laço do-while sempre é executada (a expressão de avaliação é executada somente no final da iteração), considerando que no laço while não é necessariamente executada (a expressão de avaliação é executada no começo de cada iteração, se avaliada como false logo no começo, a execução do laço será abortada imediatamente).

Só há uma sintaxe para o laço do-while:

<?php
$i
= 0;
do {
echo
$i;
} while (
$i > 0);
?>

O laço acima será executado somente uma vez, pois após a primeira iteração, quando a expressão de avaliação for executada, resultará em false ($i não é maior que 0) e a execução do laço será encerrada.

Usuário avançados de C devem estar familiarizados com um uso diferente do laço do-while, que permite parar a execução no meio do bloco de códigos, encapsulando-os em um do-while (0), e usando o break . O código a seguir demonstra isso:

<?php
do {
if (
$i < 5) {
echo
"i is not big enough";
break;
}
$i *= $factor;
if (
$i < $minimum_limit) {
break;
}
echo
"i is ok";

/* process i */

} while (0);
?>

É possível usar o goto ao invés desse hack.

add a note

User Contributed Notes 1 note

up
32
jayreardon at gmail dot com
16 years ago
There is one major difference you should be aware of when using the do--while loop vs. using a simple while loop: And that is when the check condition is made.

In a do--while loop, the test condition evaluation is at the end of the loop. This means that the code inside of the loop will iterate once through before the condition is ever evaluated. This is ideal for tasks that need to execute once before a test is made to continue, such as test that is dependant upon the results of the loop.

Conversely, a plain while loop evaluates the test condition at the begining of the loop before any execution in the loop block is ever made. If for some reason your test condition evaluates to false at the very start of the loop, none of the code inside your loop will be executed.
To Top