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

自定义PHP求三数最大值函数仅返回首个输入值问题求助

问题排查与修复

你的代码存在几个关键错误,导致函数仅返回第一个输入值:

错误1:函数参数定义不匹配

调用find_max($n1, $n2, $n3)时传入了三个参数,但函数定义只写了find_max($result),这意味着函数仅接收第一个参数$n1作为$result,$n2、$n3完全没被函数获取到。同时函数内部使用的$n1、$n2、$n3都是未定义变量,所有条件判断都会不成立,最终直接返回初始的$result(也就是第一个输入值)。

错误2:使用了错误的运算符

代码里用&(按位与运算符)来做逻辑判断,这是错误的。逻辑判断的“与”应该用&&(逻辑与运算符),&会对数值进行二进制位运算,无法正确判断条件是否同时成立。

错误3:未处理数值相等的场景

如果有两个或三个数值相等且为最大值时,现有条件(>)都不满足,函数依然会返回初始值,导致结果错误。


修复后的代码

// input
$n1 = $_POST['n1'];
$n2 = $_POST['n2'];
$n3 = $_POST['n3'];

print "Max number entered is: " . find_max($n1, $n2, $n3);

// 获取最大值的函数
function find_max($n1, $n2, $n3) {
    // 初始化$result为第一个值
    $result = $n1;
    // 和第二个值比较,更新最大值
    if ($n2 > $result) {
        $result = $n2;
    }
    // 和第三个值比较,更新最大值
    if ($n3 > $result) {
        $result = $n3;
    }
    return $result;
}

或者用更简洁的条件判断写法(覆盖所有场景):

function find_max($n1, $n2, $n3) {
    if (($n1 >= $n2) && ($n1 >= $n3)) {
        return $n1;
    } elseif (($n2 >= $n1) && ($n2 >= $n3)) {
        return $n2;
    } else {
        return $n3;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 17:35:24