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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 16:52:36