如何在PHP中使用switch语句打印80到100之间3的倍数
问题分析与修复代码
原代码的核心问题在于switch语句的使用方式错误:switch是基于值匹配的结构,你在case里写的是字符串形式的条件(比如"$i >= 80"),这会让PHP把$i和这个字符串做值比较,永远无法匹配成功,自然不会输出任何内容。另外两个case的条件逻辑重叠,写法完全不符合switch的使用规则。
要实现用switch语句打印80到100之间的3的倍数,我们可以利用switch(true)的技巧——当switch的表达式为true时,会执行第一个条件为true的case分支。以下是修正后的代码:
echo "Print Numbers Using Switch Statement:<br>"; // 找到80到100之间第一个3的倍数 $start = ceil(80 / 3) * 3; for ($i = $start; $i <= 100; $i += 3) { switch (true) { case $i >= 80 && $i <= 100: echo $i . "<br>"; break; } }
代码说明
- 先通过
ceil(80/3)*3计算出80以上第一个3的倍数(81),避免遍历无关数字,提升效率 switch(true)让case里的条件表达式直接参与布尔判断,当$i在80-100范围内时,执行输出逻辑- 循环每次递增3,保证只处理3的倍数,符合需求
如果你想更严格地用switch判断每个数是否为3的倍数(即使循环范围更大),也可以这样写:
echo "Print Numbers Using Switch Statement:<br>"; for ($i = 80; $i <= 100; $i++) { switch ($i % 3) { case 0: echo $i . "<br>"; break; } }
这个版本通过判断$i%3的结果是否为0(即是否是3的倍数),利用switch的值匹配特性实现需求,同样符合要求。
内容的提问来源于stack exchange,提问作者Amna A.
相关产品推荐
相关产品推荐

