求助:使用单个PHP for循环计算1-10总和及偶数总和的问题
解决单个PHP For循环计算1-10总和与偶数总和的问题
嘿,我明白你想用单个for循环同时完成两个计算的需求,咱们先拆解现有代码的问题,再给出简单靠谱的实现方式。
原代码的核心问题
你写的循环条件$x<=10, $y<=6踩了PHP语法的小坑:PHP里的逗号运算符在条件表达式中只会保留最后一个表达式的结果。也就是说这个条件其实等价于$y<=6,循环只执行了3次(y从2→4→6,第三次循环后y变成8,不满足条件就停止了),自然得不到正确的55和30。
另外,其实完全没必要单独维护$y变量追踪偶数,用单个循环变量$x就能同时搞定两个累加需求。
正确的实现代码
下面是两种只用单个for循环的可行写法,推荐第一种简洁版:
写法一:单变量循环+偶数判断
这是最直观高效的方式,让$x从1遍历到10,每次循环判断当前数是否为偶数,分别累加对应总和:
<?php $sum = 0; $evensum = 0; for($x = 1; $x <= 10; $x++) { $sum += $x; // 累加所有数的总和 if($x % 2 === 0) { // 判断是否为偶数 $evensum += $x; } } echo "total sum= ". $sum . ", even sum=" . $evensum; // 输出:total sum= 55, even sum=30 ?>
写法二:双变量修正版(仅作演示)
如果你坚持想用双变量的写法,需要把循环条件改成$x<=10(保证遍历完1-10的所有数),同时让$y同步对应偶数:
<?php $sum = 0; $evensum = 0; for($x = 1, $y = 2; $x <= 10; $x++, $y += ($x % 2 === 0 ? 2 : 0)) { $sum += $x; // 仅当x为偶数时累加y(此时y与x值相等) if($x % 2 === 0) { $evensum += $y; } } echo "total sum= ". $sum . ", even sum=" . $evensum; ?>
不过这种写法没必要,反而增加了复杂度,优先选第一种就好。
验证结果
两种写法都会输出你预期的结果:
total sum= 55, even sum=30
内容的提问来源于stack exchange,提问作者user9682104
相关产品推荐
相关产品推荐

