You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何这段PHP代码片段输出特定值?求详细解析

PHP代码输出逻辑解析

原代码(判断条件$sum>20)

<?php 
    $numbers=array(1,2,3,4,5,6,7,8,9,10);
    $sum=0;
    foreach($numbers as $number)
     {
       if($sum>20){
        // break;
        continue;
     }
      $sum=$sum+$number;
     }
     echo $sum." " .$number;
?>

执行步骤拆解

我们逐次遍历数组元素,跟踪$sum和$number的变化:

  1. 初始状态:$sum=0,$numbers数组元素为[1,2,3,4,5,6,7,8,9,10]
  2. 遍历第一个元素$number=1:$sum=0不大于20,执行$sum=0+1=1
  3. 遍历第二个元素$number=2:$sum=1≤20,执行$sum=1+2=3
  4. 遍历第三个元素$number=3:$sum=3≤20,执行$sum=3+3=6
  5. 遍历第四个元素$number=4:$sum=6≤20,执行$sum=6+4=10
  6. 遍历第五个元素$number=5:$sum=10≤20,执行$sum=10+5=15
  7. 遍历第六个元素$number=6:$sum=15≤20,执行$sum=15+6=21
  8. 遍历第七个元素$number=7:此时$sum=21>20,触发continue语句,跳过本次循环的$sum累加操作,直接进入下一次循环
  9. 遍历第八个元素$number=8:$sum仍为21>20,触发continue,跳过累加
  10. 遍历第九个元素$number=9:$sum仍为21>20,触发continue,跳过累加
  11. 遍历第十个元素$number=10:$sum仍为21>20,触发continue,跳过累加

循环结束后,$sum的值停留在21;PHP的foreach循环结束后,$number变量会保留最后一次遍历的元素值(也就是10),所以最终输出为21 10。

修改判断条件为$sum>30后的执行逻辑

当判断条件改为$sum>30时,循环执行到:

  • 遍历$number=7时,$sum=21≤30,执行$sum=21+7=28
  • 遍历$number=8时,$sum=28≤30,执行$sum=28+8=36
  • 后续遍历$number=9和$number=10时,$sum=36>30,均触发continue跳过累加

循环结束后,$sum=36,$number=10,输出为36 10。你提到的“得到预期结果”,核心是此时$sum会累加至超过30,而continue只会跳过当前循环的累加,不会终止整个循环,必须遍历完所有数组元素才会结束。

补充说明

如果想要在$sum超过指定值时直接终止循环,而非跳过后续累加,应该把continue换成break。比如将判断里的continue改为break,当$sum>20时循环直接结束,此时$number会停留在6,输出为21 6。

内容的提问来源于stack exchange,提问作者vikas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 13:30:29