PHP奇偶求和函数异常:非整数输入无输出问题求助
问题分析与修正
你的代码核心问题出在判断逻辑顺序错误和错误分支覆盖不全:
1. 先判断偶数再校验类型的逻辑漏洞
PHP执行取模运算%时会自动做类型转换:
- 非数字字符串(比如"Cat")会被转为
0,0%2==0会成立,因此会进入第一个if分支 - 但后续
is_int()判断会失败(参数是字符串类型),导致函数无输出,根本走不到错误提示分支
2. 错误分支的判断过于严苛
你的elseif要求三个参数全为字符串才触发错误提示,但只要有一个参数不是整数(比如混合字符串和整数的场景),就应该报错,当前逻辑无法覆盖这种情况。
修正后的代码
先做类型校验,确保所有参数都是整数,再判断是否为偶数,最后统一处理错误情况:
function check($a, $b, $c){ // 先校验所有参数是否为整数类型 if (is_int($a) && is_int($b) && is_int($c)) { // 再判断是否均为偶数 if ($a % 2 == 0 && $b % 2 == 0 && $c % 2 == 0) { $sum = $a + $b + $c; echo "The sum of even numbers is $sum"; return $sum; // 按需求返回结果,而非仅输出 } else { echo "Error: Not all numbers are even integers"; } } else { echo "Error, enter the correct variable type"; } } // 测试用例1:全偶数整数 $a=4; $b=4; $c=6; check($a, $b, $c); // 测试用例2:混合字符串与整数 $a="Cat"; $b=4; $c=6; check($a, $b, $c);
额外优化建议
- 若需严格区分整数与
4.0这类浮点数,用is_int();若允许4.0这种整数值,可改用filter_var($var, FILTER_VALIDATE_INT)判断 - 函数需求是"返回偶数整数之和",建议用
return返回结果,而非直接echo,提升函数复用性
内容的提问来源于stack exchange,提问作者New_guy_in_here
相关产品推荐
相关产品推荐

