早上好,我似乎在PHP函数中遇到麻烦,我想输入3个数字并输出最高的数字。我的代码的哪一部分阻止数字显示?感谢您的帮助。
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<hr>
<form action="functioncall.php" method="post">
Enter Number 1: <input type="number" name="n1"> <br>
Enter Number 2: <input type="number" name="n2"> <br>
Enter Number 3: <input type="number" name="n3"> <br>
<input type="submit">
</form>
<hr>
<?php
function getMax(){
if(isset($_POST['n1']) >= isset($_POST['n2']) && isset($_POST['n1']) >= isset($_POST['n3'])){
return isset($_POST['n1']);
} elseif (isset($_POST['n2']) >= isset($_POST['n1']) && isset($_POST['n2']) >= isset($_POST['n3'])) {
return isset($_POST['n2']);
} else {
return isset($_POST['n3']);
}
}
echo getMax();
?>
</body>
</html>
答案 0 :(得分:3)
就像其他人提到的那样,isset()
仅返回一个布尔值以查看是否设置了该值。
有一种更好的方法可以使用PHP方法max()
获取最大值:
在此处查看http://php.net/manual/en/function.max.php
您可以将这样的方法编写得更简单:
<?php
function getMax(){
$n1 = isset($_POST['n1']) ? $_POST['n1']: 0;
$n2 = isset($_POST['n3']) ? $_POST['n2']: 0;
$n3 = isset($_POST['n3']) ? $_POST['n3']: 0;
return max($n1, $n2, $n3);
}
如果您使用的是PHP 7+,则可以使用Null coalescing operator来做到这一点:
<?php
function getMax(){
$n1 = $_POST['n1'] ?? 0;
$n2 = $_POST['n2'] ?? 0;
$n3 = $_POST['n3'] ?? 0;
return max($n1, $n2, $n3);
}
答案 1 :(得分:1)
尝试一下:
您已将if设置为(isset($_POST['n1']) >= isset($_POST['n2']))
并将其与1和0进行比较,而不会与实际值进行比较。并且将return用作isset()
也会返回0或1。
function getMax(){
if(($_POST['n1'] >= $_POST['n2']) && ($_POST['n1'] >= $_POST['n3'])){
return ($_POST['n1']);
} elseif (($_POST['n2'] >= $_POST['n1']) && ($_POST['n2'] >= $_POST['n3'])) {
return ($_POST['n2']);
} else {
return ($_POST['n3']);
}
}
echo getMax();
答案 2 :(得分:0)
您返回/使用isset
结果,它是一个布尔值。仅使用isset
来检查是否提供了输入内容,而是使用数字。
答案 3 :(得分:0)
您正在返回isset($ _ POST ['n1']);将会返回(1或0)或(true或false)
您只需要返回$ _POST ['您的输入变量名称']
将所有的return语句替换为
return $_POST['your input variable name'];
答案 4 :(得分:0)
您在HTML表单中缺少input[submit]
。
以此替换您的html输入提交按钮
<input type="submit" name="submit" value="submit">
在php中尝试此代码
function getMax($n1,$n2,$n3){
if(($n1 >= $n2) && ($n1 >= $n3)){
return $n1;
} elseif (($n2 >= $n1) && ($n2 >= $n3)) {
return $n2;
} else {
return $n3;
}
}
if(isset($_POST['submit']))//checks if form is submitted
getMax($_POST['n1'],$_POST['n2'],$_POST['n3']);
我没有完全了解您的逻辑,但是您的php代码缺少一些基本规则
答案 5 :(得分:0)
$arr = [$_POST['n1'], $_POST['n2'], $_POST['n3']];
function getMax($arr) {
$sorted = rsort($arr, SORT_NUMERIC);
return $sorted[0];
}
如果在函数外部创建数组,则意味着您可以输入任意长度的数组并获得最大值,而不仅仅是三个元素(将rsort()
更改为sort()
以获取最小。)
运行PHP数组排序功能rsort()
,该功能从最高到最低对数组进行排序。然后返回第一个必须为最大值的元素。
如果您要特别挑剔,可以遍历所有$ _POST值,并使用is_numeric()
来检查它们是否为数字,并且仅将它们添加到数组中。
注意:我使用的是> = PHP5.6数组表示法,如果您使用的是旧版本,请使用array(1, 2, 3)
。