array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'de', ), 'this' => array ( 0 => 'control-structures.do.while.php', 1 => 'do-while', ), 'up' => array ( 0 => 'language.control-structures.php', 1 => 'Kontrollstrukturen', ), 'prev' => array ( 0 => 'control-structures.while.php', 1 => 'while', ), 'next' => array ( 0 => 'control-structures.for.php', 1 => 'for', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'de', 'path' => 'language/control-structures/do-while.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
do-while
-Schleifen sind sehr ähnlich zu
while
-Schleifen, außer dass der Wahrheitsausdruck erst am
Ende eines jeden Durchlaufs statt zu dessen Beginn geprüft wird. Der
Hauptunterschied zu einer normalen while
-Schleife ist, dass
die do-while
-Schleife garantiert mindestens einmal
durchlaufen wird (Der Wahrheitsausdruck wird ja nur am Ende jeden Durchlaufs
geprüft), wohingegen es nicht zwingend ist, dass eine reguläre
while
-Schleife immer ausgeführt wird (hier wird der
Wahrheitsausdruck bereits zu Beginn eines jeden Durchlaufs überprüft.
Evaluiert er dabei zu false
, wird die Verarbeitung der Schleife sofort
abgebrochen).
Es gibt nur eine Syntax für do-while
-Schleifen:
<?php
$i = 0;
do {
echo $i;
} while ($i > 0);
?>
Die obige Schleife wird exakt einmal durchlaufen, da nach dem ersten Durchlauf,
wenn der Wahrheitsausdruck geprüft wird, dieser false
ergibt
($i ist nicht größer als 0), so dass die
Schleifenausführung beendet wird.
Fortgeschrittenen C-Programmierern ist möglicherweise eine etwas andere
Verwendung von do-while
-Schleifen bekannt, die es erlaubt,
die Ausführung in der Mitte des Codeblocks zu unterbrechen. Dies wird durch
ein Kapseln in do-while
(0) und die Verwendung des break
-Statements
erreicht. Das folgende Codefragment demonstriert dieses Verhalten:
<?php
do {
if ($i < 5) {
echo "i ist nicht groß genug";
break;
}
$i *= $factor;
if ($i < $minimum_limit) {
break;
}
echo "i ist ok";
/* i verarbeiten */
} while (0);
?>
Es ist möglich, statt dieses Hacks den goto
-Operator
zu verwenden.