一、for 循环语法拆解
通用格式为:for(初始化语句; 条件判断语句; 条件改变表达式)。
它的执行顺序非常固定:
- 初始化:只在循环开始前执行 1次(如
$num = 1)。 - 条件判断:每次循环前执行。满足则进入循环体,不满足则结束(如
$num <= 100)。 - 循环体:执行大括号
{}内的代码(如累加)。 - 条件改变:每次循环结束后执行(如
$num++),然后回到第2步继续判断。
二、代码逻辑逐行解析(计算1到100的和)
PHP 代码的核心逻辑如下:
<?php
$total = 0; // 1. 初始化总和变量为0
for($num = 1; $num <= 100; $num++) // 2. 循环:从1到100
{
$total = $total + $num; // 3. 累加:每次把当前的$num加到$total里
}
echo $total; // 4. 输出结果:5050
echo "<br/>"; // 5. 换行(HTML换行符)
echo $num; // 6. 输出循环结束后的$num值:101
?>Code language: HTML, XML (xml)
- 注释掉的代码:
//for($num = 1 ; $num <=100;$num = $num + 1)与下面的$num++完全等价,$num++只是更简洁的自增写法。 - 数学结果:1加到100的正确答案是 5050。
- 最终
$num的值:当$num变成 101 时,判断$num <= 100失败,循环终止,所以最后echo $num会输出 101。
三、变量作用域差异
//这里num还是可以调用的 这点和C c++ java c#等 有点不一样
这是一个非常关键的考点:
- 在 C/C++/Java 中:
for(int i=0; ...)里定义的变量i是局部变量,循环结束后就被销毁,外部无法访问(会报错)。 - 在 PHP 中:
for($num=1; ...)里的$num在循环结束后依然有效(属于当前作用域的全局变量),所以循环外echo $num;能正常输出 101。这是 PHP 语法上比较灵活(但也容易踩坑)的地方。
四、死循环与执行流程
“死循环”,在 for 中如果条件改变表达式缺失或条件永远为真,就会死循环:
// 死循环示例(条件永远满足)
for($i = 1; $i > 0; $i++) {
// 会一直执行,直到内存耗尽
}Code language: PHP (php)
正常循环的执行流程小结:
$num=1(初始化) → 判断1<=100(真) → 累加 → $num变2 → 判断2<=100(真) → … → $num变101 → 判断101<=100(假) → 结束循环 → 输出。
Previous: 控制结构switch
Next: while循环和++的问题