PHP嵌套for循环代码逻辑解析:为何首行仅输出一个*?
理解这段PHP代码的输出逻辑
咱们一步一步拆解这段代码的逻辑,你就能明白为啥第一行只输出1个*啦!
第一部分:递增的星号行
先看代码的前半段:
$n = 5; for ($i = 1; $i <= $n; $i++) { for ($j = 1; $j <= $i; $j++) { echo ' * '; } echo '<br>'; }
这里的外层循环$i从1开始,一直到5结束。核心关键在内层循环的条件:$j <= $i——也就是说,内层循环执行的次数完全由当前的$i值决定:
- 当
$i=1时,内层循环只跑1次($j从1到1),所以输出1个* - 当
$i=2时,内层循环跑2次,输出2个* - ...
- 当
$i=5时,内层循环跑5次,输出5个*
所以这部分会输出:
第二部分:递减的星号行
再看代码的后半段:
for ($i = $n; $i >= 1; $i--) { for ($j = 1; $j <= $i; $j++) { echo ' * '; } echo '<br>'; }
这部分外层循环$i从5开始,递减到1结束,内层循环的条件还是$j <= $i,所以:
- 当
$i=5时,输出5个* - 当
$i=4时,输出4个* - ...
- 当
$i=1时,输出1个*
这部分会输出:
为啥不是每行5个?
你可能误以为内层循环的条件是$j <= $n(也就是固定和$n比),但实际上代码里写的是$j <= $i——这才是和“每行输出5个”的核心区别!如果把内层循环的条件改成$j <= $n,那每行才会固定输出5个*。
内容的提问来源于stack exchange,提问作者Aleksandar Mihailovic
相关产品推荐
相关产品推荐

