php中do...while的用法

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

do...while 是 PHP 中的循环结构,特点是先执行一次循环体,再判断条件是否成立,因此它至少会运行一次,和 while 循环(先判断后执行)有本质区别。

基本语法结构

格式如下:

do {
    // 循环体(至少执行一次)
} while (条件表达式);

注意末尾的分号不能省略,这是 do...while 和其他循环明显不同的地方。

什么时候该用 do...while

适合需要确保代码块至少运行一次的场景,比如:

  • 用户输入验证:先让用户输入,再检查是否合法,不合法就重输
  • 菜单选择:先显示菜单,再读取选项,错误则重新显示
  • 生成随机数直到满足某个条件(如生成不重复的 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 能让逻辑更清晰、代码更健壮。