求教PHP循环代码逻辑:为何循环结束后$a最终值为20
PHP循环$a最终值为20的逻辑解释

你算不对结果,基本是两个点没搞清楚:一是PHP复合赋值运算符的优先级规则,二是for循环的固定执行流程,逐轮拆解计算过程就能得到20的结果。
先记两个不踩坑的基础规则
- 类似
+=、*=这类复合赋值运算符,优先级比普通加减乘除低,永远先把等号右边的所有算术表达式算完,最后再给左边变量赋值 - for循环执行顺序是固定的,别搞反步骤:
- 循环启动时只执行1次初始化操作
- 判断循环终止条件,不满足直接结束循环
- 条件满足就跑一遍循环体内的代码
- 执行括号末尾的增量操作(比如
$i++) - 回到判断条件的步骤重复校验
逐轮计算过程
题目对应的完整代码如下:
$a = 2; for ($i = 0; $i <= 2; $i++) { $a += $a + $i; }
初始状态:$a = 2,循环初始化$i = 0
- 第一轮判断:
$i=0满足<=2的条件
先算等号右侧:$a + $i = 2 + 0 = 2,执行赋值$a = 2 + 2 = 4
执行增量操作$i++,$i变成1 - 第二轮判断:
$i=1满足<=2的条件
先算等号右侧:$a + $i =4 +1=5,执行赋值$a =4 +5=9
执行增量操作$i++,$i变成2 - 第三轮判断:
$i=2满足<=2的条件
先算等号右侧:$a +$i =9+2=11,执行赋值$a =9+11=20
执行增量操作$i++,$i变成3 - 第四轮判断:
$i=3不满足<=2的条件,循环直接终止
最常见的计算错误是数错循环轮次,很多人以为
$i从0到2只跑2轮,漏掉$i=2的最后一轮计算,结果算成9,和正确值差很多。
内容的提问来源于stack exchange,提问作者programistadawid
相关产品推荐
相关产品推荐

