PHP: 循环结构

计算机最擅长的就是重复劳动。循环让你用几行代码重复执行成百上千次操作——生成表格、遍历用户列表、计算总和——全都不在话下。

1. while 循环

只要条件为 true 就一直重复执行。先判断,后执行。

PHP
<?php
$i = 1;
while ($i <= 5) {
    echo "第 {$i} 次<br>";
    $i++;
}
// 输出第1次到第5次
?>

流程图:

TEXT 📖 仅展示
初始化 → [条件判断] → true → 执行循环体 → 更新变量 → 回到判断
                      ↓ false
                     退出
⚠️ 注意: 如果条件永远为 true,就会造成死循环,程序卡死。每次写 while 前确认:循环里面有让条件最终变 false 的代码吗?


2. do...while 循环

和 while 的唯一区别:先执行一次,再判断。 保证循环体至少执行一次。

PHP
<?php
$i = 10;
do {
    echo "执行了!<br>";
    $i++;
} while ($i < 5);
// 即使条件一开始就是 false,也会输出一次"执行了!"
?>
while do...while
判断时机 先判断后执行 先执行后判断
至少执行? ❌ 可能 0 次 ✅ 至少 1 次
使用频率 常用 较少

3. for 循环

for 把初始化、条件判断、变量更新写在一起,是循环中最常用的:

PHP
<?php
for ($i = 1; $i <= 5; $i++) {
    echo "第 {$i} 次<br>";
}
// 输出 1 到 5
?>

三个部分:

PHP
for (初始化; 条件; 每次执行后的操作) {
    // 循环体
}

▶ 示例:用 for 循环输出乘法表

PHP
<?php
echo "<table border='1'>";
for ($i = 1; $i <= 9; $i++) {
    echo "<tr>";
    for ($j = 1; $j <= $i; $j++) {
        echo "<td>{$j}×{$i}=" . ($i * $j) . "</td>";
    }
    echo "</tr>";
}
echo "</table>";
?>
▶ 试一试

4. foreach 循环

foreach 是 PHP 最独特的循环——专门用来遍历数组,语法简洁到让人上瘾:

PHP
<?php
// 遍历索引数组(只要值)
$fruits = ["苹果", "香蕉", "橘子"];
foreach ($fruits as $fruit) {
    echo "{$fruit}<br>";
}

// 遍历关联数组(键+值)
$user = [
    "name" => "小明",
    "age" => 25,
    "city" => "北京"
];
foreach ($user as $key => $value) {
    echo "{$key}: {$value}<br>";
}
// name: 小明
// age: 25
// city: 北京
?>
💡 提示: foreach 是 PHP 中用得最多的循环。记两个模式:foreach ($arr as $val) 只要值;foreach ($arr as $key => $val) 要键和值。


5. break 与 continue

关键字 作用
break 立即跳出整个循环,不再执行
continue 跳过当前这一轮的剩余代码,进入下一轮

▶ 示例:break 和 continue

PHP
<?php
// break:到 5 就停
for ($i = 1; $i <= 10; $i++) {
    if ($i == 5) {
        break;  // 跳出循环
    }
    echo $i . " ";
}
// 输出: 1 2 3 4

// continue:跳过 5
for ($i = 1; $i <= 10; $i++) {
    if ($i == 5) {
        continue;  // 跳过本次
    }
    echo $i . " ";
}
// 输出: 1 2 3 4 6 7 8 9 10
?>
▶ 试一试
💡 提示: break 2; 可以跳出两层嵌套循环,continue 2; 跳过外层循环的当前轮。后面的数字代表跳出/跳过的层数。


6. 循环与 HTML 混写

替代语法让循环在 HTML 模板中更美观:

▶ 示例:用 foreach 生成 HTML 列表

PHP
<?php
$students = [
    ["name" => "张三", "score" => 92],
    ["name" => "李四", "score" => 85],
    ["name" => "王五", "score" => 78],
    ["name" => "赵六", "score" => 95],
];
?>

<table border="1">
    <tr>
        <th>姓名</th>
        <th>分数</th>
        <th>评级</th>
    </tr>
    <?php foreach ($students as $s): ?>
    <tr>
        <td><?= $s['name'] ?></td>
        <td><?= $s['score'] ?></td>
        <td>
            <?php if ($s['score'] >= 90): ?>
                🌟 优秀
            <?php elseif ($s['score'] >= 80): ?>
                👍 良好
            <?php else: ?>
                📚 继续努力
            <?php endif; ?>
        </td>
    </tr>
    <?php endforeach; ?>
</table>
▶ 试一试

这个例子展示了 PHP 的核心魔力——用几行代码把数组数据变成完整的 HTML 表格。


7. 选择合适的循环

场景 推荐循环
遍历数组 foreach
固定次数(如 1 到 10) for
不确定次数但知道条件 while
需要至少执行一次 do...while(但很少用)
嵌套遍历二维数组/表格 for 嵌套 或 foreach 嵌套
💡 提示: PHP 编程中,foreach 是绝对主力(遍历数组的场景太多),其次 for(计数循环),while 用的一般是读文件/数据库结果集时,do...while 极少用。

❓ 常见问题

Q for 循环的 $i++$i += 2 有什么区别?
A $i++ 每次加 1(递增 1),$i += 2 每次加 2(步长为 2)。后者可以用来输出奇数/偶数。
Q foreach 和 for 什么时候用哪个?
A foreach 只用来遍历数组和对象,语法更简洁。for 适合需要精确控制索引和步长的计数循环。
Q PHP 中 foreach 修改原数组会怎样?
A 默认情况下 foreach ($arr as $val) 操作的是副本,修改 $val 不影响原数组。但如果 $val 前面加 &(引用传递),修改会影响原数组。这个话题在第12课函数进阶中会详细讲。

📖 小节

📝 作业

  1. 用 for 循环输出 1 到 100 的所有偶数(提示:步长为 2 或 % 2 == 0 判断)。
  2. 创建一个关联数组,存储你的 5 个朋友的名字和电话号码,用 foreach 遍历并以表格形式展示。
  3. 用嵌套循环打印一个金字塔星号图案(第1行1个星,第2行3个,...第5行9个,居中对齐)。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏