while 循环
while 循环先判断条件,条件为真才执行循环体,语法如下:
<?php
$i = 1;
while ($i <= 5) {
echo "第 $i 次循环\n";
$i++;
}
?>
注意循环体内必须有让条件趋于结束的语句(如 $i++),否则会死循环。
do-while 循环
do-while 先执行一次循环体,再判断条件,因此至少会执行一次:
<?php
$i = 10;
do {
echo "这里会输出一次,即使条件不成立\n";
$i++;
} while ($i <= 5);
?>
for 循环
for 循环把初始化、条件判断、步进写在同一行,适合已知循环次数的场景:
<?php
for ($i = 1; $i <= 5; $i++) {
echo "第 $i 次循环\n";
}
?>
三个表达式都可以省略,但分号不能省,省略条件时要靠 break 跳出:
<?php
for (;;) {
if (mt_rand(1, 10) > 8) {
break;
}
echo "随机执行\n";
}
?>
用循环遍历数组
<?php
$arr = ['php', 'java', 'python'];
// for 配合 count 遍历索引数组
for ($i = ; $i < count($arr); $i++) {
echo $arr[$i] . "\n";
}
?>
如果是关联数组,推荐使用 foreach,这里先看一个 while 配合 each 风格的思路对比,实际开发中更常用:
<?php
$user = ['name' => 'Tom', 'age' => 18];
foreach ($user as $key => $value) {
echo "$key: $value\n";
}
?>
break 和 continue
break 用于立即结束整个循环,continue 用于跳过本次循环进入下一轮:
<?php
for ($i = 1; $i <= 10; $i++) {
if ($i % 2 == ) {
continue; // 跳过偶数
}
if ($i > 7) {
break; // 超过 7 直接结束
}
echo $i . " ";
}
// 输出:1 3 5 7
?>
如何选择循环
- 已知循环次数:优先用
for,逻辑集中、不易漏写步进 - 循环次数不确定、依赖运行时条件:用
while - 无论条件是否成立都要先执行一次:用
do-while - 遍历数组:优先用
foreach
理解这几种循环的执行顺序是关键:先看条件判断在循环体之前还是之后,再看初始化和步进写在什么位置,选型就不会出错。