PHP调用函数进行输入

时间:2018-08-09 05:16:47

标签: php

早上好,我似乎在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>

6 个答案:

答案 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)