Циклите do-while (прави-докато) са подобни на циклите while, с тази разлика, че вместо в началото, изразът за истинност се проверява в края на всяка итерация. Основната разлика от обикновените цикли while е, че първата итерация на цикъл do-while със сигурност ще се изпълни (условието се проверява единствено в края на итерацията), докато при циклите while не е задължително да се изпълни (условието се проверява в началото на всяка итерация, така че ако се изчисли на FALSE от самото начало, цикълът ще завърши незабавно).
Съществува само един синтаксис за цикли do-while:
<?php
$i = 0;
do {
echo $i;
} while ($i > 0);
?>
Горният цикъл ще се изпълни точно един път, тъй като след първата итерация, когато се провери условието, то ще се изчисли на FALSE ($i не е по-голяма от 0) и изпълненито на цикъла ще спре.
Напредналите програмисти на C може би са запознати с една друга употреба на цикъла do-while: в случай че трябва да се спре изпълнението в средата на блокове от код, те се заграждат с do-while (0) и се използва командата break. Следният фрагмент от код демонстрира това:
<?php
do {
if ($i < 5) {
echo "i не е достатъчно голямо";
break;
}
$i *= $factor;
if ($i < $minimum_limit) {
break;
}
echo "i е ОК";
/* работа с i */
} while (0);
?>
Не се притеснявате ако не разберете това веднага или изобщо никога. Можете да пишете скриптове и то мощни скриптове без да използвате това 'свойство'.