In computer programming, the do...while loop is an exit-controlled (post-test) iteration structure. Unlike the standard while loop, which checks its condition at the entrance, a do...while loop executes its code block first and verifies the condition afterwards. Consequently, the statements inside a do...while loop are guaranteed to execute at least once, regardless of whether the condition is true or false.
do...while LoopNotice the required closing semicolon (;) after the while condition:
<?php
$i = 1;
do {
echo "The current number is: " . $i . "<br>";
$i++;
} while ($i <= 5);
?>
To clearly observe the exit-controlled behavior, consider this test case where the condition is false right from the start:
<?php
$balance = 0; // Balance is 0
do {
// This executes unconditionally on iteration #1!
echo "Processing initial account verification check...<br>";
} while ($balance > 100); // Condition is FALSE!
// Outputs: Processing initial account verification check...
?>
while vs do...while| Feature | while Loop |
do...while Loop |
|---|---|---|
| Classification | Entry-controlled (Pre-test) | Exit-controlled (Post-test) |
| Condition Check Location | At the beginning of the loop | At the end of the loop |
| Minimum Executions | 0 (May never execute if initially false) | 1 (Always executes at least once) |
| Terminating Semicolon | No semicolon after while statement | Requires semicolon (while (...);) |
| Typical Use Case | Reading database records, file reading | Displaying interactive menus, dice rolling, user prompts |
When generating a unique verification OTP or coupon code that must be generated at least once and re-rolled if a collision occurs:
<?php
$existingCodes = ["ABC1", "XYZ9", "VEE8"];
$attempts = 0;
do {
// Generate a random 4-character token
$newCode = "VEE" . rand(1, 9);
$attempts++;
} while (in_array($newCode, $existingCodes) && $attempts < 5);
echo "Generated Unique Coupon Code: " . $newCode . " (in " . $attempts . " attempts)";
?>
High-Frequency Exam Question:
Q: Identify the syntax error in: do { echo "Hello"; } while ($x < 5)
A: The statement is missing the terminating semicolon (;) at the end of the while ($x < 5) line. In PHP, this triggers a Parse error: syntax error, unexpected end of file.
Exercise 16.1: Write a do-while loop that displays numbers from 10 down to 1 in reverse order.
Exercise 16.2: Write a script simulating rolling a 6-sided die (rand(1,6)) using a do-while loop until a 6 is rolled, printing each attempt.