自定义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
相关产品推荐
相关产品推荐

