PHP for 循环
for 循环提供了一种结构化的方式,用于将一段代码块执行特定次数。当我们在编写代码前就已经提前知道需要循环多少次时,它特别有用,能让你精确控制任务重复的节奏。
与我们前面学过的 while 或 do-while 循环(它们更依赖于某个业务条件何时达成)不同,for 循环直接将其自身的初始化、条件判断和递增/递减步进这三个核心步骤,清晰地定义在了它的语法结构内部。
1. 剖析 for 循环的语法
PHP 中 for 循环的基本结构由圆括号内用分号隔开的三个表达式组成,紧接着是要执行的代码块。
for (初始化; 条件; 递增/递减) {
// 每次迭代都要执行的代码
}让我们逐一拆解:
- 初始化 (Initialization): 这个表达式只在循环开始时执行一次。它通常用于声明和初始化一个循环计数器变量。
// 示例:将计数器变量 $i 初始化为 0
for ($i = 0; /* ... */) { }条件 (Condition): 这个表达式在每次迭代开始前都会被评估。如果条件计算为 true,循环就继续执行代码块。如果为 false,循环就会立即终止。
// 示例:只要 $i 小于 5,循环就继续
for (/* ... */; $i < 5; /* ... */) { }递增/递减 (Increment/Decrement): 这个表达式在每次迭代结束时(即代码块运行完毕后)执行。它通常用于更新循环计数器变量,使其一步步逼近终止条件。
// 示例:每次迭代后将 $i 加 1
for (/* ... */; /* ... */; $i++) { }1.1 基础 for 循环示例
假设你需要显示数字 1 到 5。for 循环是完成此任务最理想的控制结构。
<?php
for ($i = 1; $i <= 5; $i++) {
echo "当前数字是:" . $i . "<br>";
}
?>在这个例子中:
$i = 1将计数器$i初始化为1。$i <= 5是条件。只要$i小于或等于5,循环就会继续。$i++在每次迭代后将$i递增1。
输出结果:
当前数字是:1
当前数字是:2
当前数字是:3
当前数字是:4
当前数字是:52. for 循环的高级进阶场景
虽然基本结构很直接,但 for 循环提供了极高的灵活性。
2.1 多个初始化或步进表达式
你可以通过逗号分隔,在一个 for 循环中包含多个初始化或递增/递减表达式。
<?php
// 示例:同时使用两个计数器变量
for ($i = 0, $j = 10; $i < 5; $i++, $j--) {
echo "i 的值:" . $i . ",j 的值:" . $j . "<br>";
}
?>在这里,$i 和 $j 同时被初始化。在每次迭代中,$i 递增而 $j 递减。
输出结果:
i 的值:0,j 的值:10
i 的值:1,j 的值:9
i 的值:2,j 的值:8
i 的值:3,j 的值:7
i 的值:4,j 的值:62.2 省略表达式
for 循环语法中的三个表达式任何一个都可以省略,但分隔它们的分号 ; 必须保留。如果省略了“条件”表达式,它默认被视为 true,这将创建一个无限循环(除非你在代码块内部使用我们以后会讲的 break 语句来终止它)。
<?php
// 示例:省略初始化和步进表达式
$k = 1; // 在循环外部初始化
for (; $k <= 3;) { // 循环内部只有条件表达式
echo "步骤:" . $k . "<br>";
$k++; // 把步进逻辑移到了循环体内部
}
?>这证明了,虽然 for 循环是为固定迭代设计的,但它的各个组件也可以像 while 循环那样,在外部或循环体内部进行管理。然而,对于固定次数的迭代,为了代码的清晰度和可读性,最佳实践是将所有三个组件都保留在 for 循环的圆括号内。
3. 实战案例与演示
3.1 计算阶乘 (Factorial)
让我们使用 for 循环来计算一个数字的阶乘(例如 5!,即 5 的阶乘,计算方法是 5 * 4 * 3 * 2 * 1)。
<?php
$number = 5;
$factorial = 1; // 将阶乘初始化为 1,因为乘以 0 结果永远是 0
// 从 $number 开始倒数递减循环,直到 1
for ($i = $number; $i >= 1; $i--) {
$factorial *= $i; // 等同于 $factorial = $factorial * $i;
echo "当前乘以:" . $i . ",目前阶乘结果:" . $factorial . "<br>";
}
echo $number . " 的阶乘是:" . $factorial . "<br>";
?>输出结果:
当前乘以:5,目前阶乘结果:5
当前乘以:4,目前阶乘结果:20
当前乘以:3,目前阶乘结果:60
当前乘以:2,目前阶乘结果:120
当前乘以:1,目前阶乘结果:120
5 的阶乘是:1203.2 动态生成 HTML 表格
for 循环非常适合用来生成重复的 HTML 结构,比如表格中的行和列。
<?php
echo "<table border='1' style='border-collapse: collapse; text-align: center;'>";
echo "<thead><tr><th style='padding: 5px;'>行号</th><th style='padding: 5px;'>平方值</th></tr></thead>";
echo "<tbody>";
// 循环生成 10 行表格数据
for ($row = 1; $row <= 10; $row++) {
$square = $row * $row;
echo "<tr>";
echo "<td style='padding: 5px;'>第 " . $row . " 行</td>";
echo "<td style='padding: 5px;'>" . $square . "</td>";
echo "</tr>";
}
echo "</tbody>";
echo "</table>";
?>这段代码片段生成了一个包含两列(“行号”和“平方值”)的简单 HTML 表格。for 循环迭代 10 次,每次都会创建新的一行 <tr> 和两个单元格 <td>。