一、do while:先执行,后判断
do while 的最大特点是至少执行一次,通用格式为:
do {
代码体
} while(条件);Code language: JavaScript (javascript)
注意末尾必须有分号 ;。
与 while 的核心对比:
while:先判断条件,成立才执行(可能一次都不执行)。do while:先执行一次代码,再判断条件(起码执行一次)。
二、代码解析
代码:
$total = 0;
$num = 101;
do {
$total = $total + $num; // 第一次无条件执行
} while($num <= 100);Code language: PHP (php)
执行结果分析:
- 初始
$num = 101,条件明显不成立。 - 但
do先执行了一次累加:$total = 0 + 101,结果为 101。 - 接着判断
101 <= 100(假),循环结束。 - 最终
echo $total输出 101(并非 1-100 的和,这里是为了演示“条件不成立也执行一次”)。 - 循环外
echo $num依然输出 101(PHP 作用域特性,循环外可调用)。
若换成普通
while($num <= 100),则一次都不会执行,$total为 0。
三、break 与 continue 在循环中的效果
最后一个 while 代码($num 从 0 开始,打印并累加,遇 5 特殊操作):
| 语句 | 作用 | 代码表现(遇 $num == 5) | 最终输出特征 |
|---|---|---|---|
continue | 跳过本次,进入下一次判断 | 跳出本次循环剩余代码(不执行 $total 累加),回到 while($num<10) 继续 | 打印 0-4,跳过5的累加,继续打印6-9;$total 不含5的累加值 |
break | 终止整个循环 | 直接结束 while,不再判断条件 | 打印 0-4,遇5直接结束;$total 只累加到4,后续不执行 |
注释精准:continue 是“跳出这次”,break 是“打断结束整个”。
四、三种循环 + 控制语句
| 循环类型 | 执行逻辑 | 适用场景 | 搭配 break/continue |
|---|---|---|---|
for | 已知次数,初始化/条件/自增集中 | 1到100遍历 | 均可,continue常配合自增防死循环 |
while | 先判断,可能0次 | 条件未知(如“输入正确才停”) | break结束,continue跳本次 |
do while | 先执行1次,再判断 | 至少跑一次(如“菜单至少显示一次”) | 同上,但因先执行,需注意首次数据 |
PHP 作用域提醒: 三种循环中定义的变量(如 $num、$total)在循环外依然可用(与 C/Java 不同)。
五、区别
最后一个代码若用 break:
// $num 从 0 开始
// 输出 0,1,2,3,4,遇5时 break,循环结束
// $total 累加的是 0+1+2+3+4 = 10(注意$num++是后置,打印后加1,但累加在后面,需细推)Code language: JSON / JSON with Comments (json)
若用 continue:
// 输出 0-9,但 $num==5 时跳过累加,其他正常
// 注意: $num++ 在 echo 里,若 continue 前未自增会死循环,但此处 $num++ 已执行,安全Code language: JSON / JSON with Comments (json)
Previous: while循环和++的问题
Next: 练习