do...while循环先执行后判断,至少运行一次,末尾需加分号;适用于用户输入验证、菜单选择等必须执行至少一次的场景。

do...while 是 PHP 中的循环结构,特点是先执行一次循环体,再判断条件是否成立,因此它至少会运行一次,和 while 循环(先判断后执行)有本质区别。
基本语法结构
格式如下:
do {
// 循环体(至少执行一次)
} while (条件表达式);
注意末尾的分号不能省略,这是 do...while 和其他循环明显不同的地方。
什么时候该用 do...while
适合需要确保代码块至少运行一次的场景,比如:
立即学习“PHP免费学习笔记(深入)”;
- 用户输入验证:先让用户输入,再检查是否合法,不合法就重输
- 菜单选择:先显示菜单,再读取选项,错误则重新显示
- 生成随机数直到满足某个条件(如生成不重复的 ID)
一个实用例子:输入密码直到正确
假设密码是 "123",要求用户反复输入,直到输对为止:
$pwd = '';
do {
echo "请输入密码:";
$pwd = trim(fgets(STDIN));
} while ($pwd !== '123');
echo "登录成功!\n";
即使第一次就输对了,循环体也已执行了一次;如果一开始输错,就会继续提示——这正是 do...while 的自然逻辑。
和 while 循环对比的关键细节
以下两段代码行为不同:
// do...while:一定输出一次
$i = 5;
do {
echo $i . "\n";
} while ($i < 3);
// while:条件为 false,一次都不执行
$i = 5;
while ($i < 3) {
echo $i . "\n";
}
前者会输出 5;后者完全静默。这个差异在流程控制中很关键,别凭直觉跳过判断。
基本上就这些。用对场景,do...while 能让逻辑更清晰、代码更健壮。











