# do-while

`do-while` loops are very similar to `while` loops, except the truth expression is checked at the end of each iteration instead of at the beginning. The main difference from regular `while` loops is that the first iteration of a `do-while` loop is guaranteed to run (the truth expression is only checked at the end of the iteration), whereas it may not necessarily run with a regular `while` loop (the truth expression is checked at the beginning of each iteration; if it evaluates to ENTITY right from the beginning, the loop execution would end immediately).

There is just one syntax for `do-while` loops:

<div class="informalexample">

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

   
```

ENTITY

    0

       

</div>

The above loop would run one time exactly, since after the first iteration, when the truth expression is checked, it evaluates to ENTITY (`$i` is not bigger than 0) and the loop execution ends.

Advanced C users may be familiar with a different usage of the `do-while` loop, to allow stopping execution in the middle of code blocks, by encapsulating them with `do-while` (0), and using the [`break`](#control-structures.break) statement. The following code fragment demonstrates this:

<div class="informalexample">

```
<?php
$i = 50;
$factor = 0.5;
$minimum_limit = 20;
do {
    if ($i < 5) {
        echo "i is not big enough\n";
        break;
    }
    $i *= $factor;
    if ($i < $minimum_limit) {
        echo "i is less than minimum limit after factor\n";
        break;
    }
    echo $i ." is ok\n";

    /* process i */

} while (0);

   
```

ENTITY

    25 is ok

       

</div>

It is possible to use the [`goto`](#control-structures.goto) operator instead of this hack.