PHP未定义索引,但在之前定义

时间:2018-03-21 17:42:07

标签: php html web

我正在编写一个脚本,它将把一堆输入加在一起。我几乎在那里,但在测试脚本时,我似乎得到警告:注意:未定义的索引:第25行的C:\ xampp \ htdocs \ Archers.php中的数字。即使我已经提前声明它,甚至在使用它时现在。脚本如下。提前致谢。

<html>
<head>
</head>
<body>
  <form method="post">
    Enter how many values you would like to enter:
    <input type="number" name="number">
    <input type="submit" name="submit">
  </form>
  <?php
  $number = 0;
  $result = 0;
  if (isset($_POST["submit"])){
    $number = $_POST['number'];
    $x = 0;
    echo "<form method=\"post\">";
    while ($x != $number) {
      echo "Enter score: <input type=\"text\" name=\"".'a'.$x."\"><br>";
      $x = $x + 1;
    }
    echo "<input type=\"submit\" name=\"submit2\"></form>";
  }
  if (isset($_POST["submit2"])){
    $y = 0;
    $number = $_POST['number'];
    while ($y != $number){
      $value = $_POST["a".$y];
      $result = $result + $value;
      $y = $y + 1;
    }
    echo $result;
  }
  ?>
</body>
</html>

2 个答案:

答案 0 :(得分:0)

您收到的错误是因为数组索引未定义 - 它根本就不存在。您的代码中可能$number = $_POST['number']行(第25位)。

这肯定意味着您没有填写表单中的数字输入,因为您没有验证数字字段未通过的可能性。

编辑:我可以看到你创建了第二个表单,其中包含submit2个键。当您第一次发布POST时,您将收到submitnumber个键(在第14 - 22行)。然后,您的代码会创建第二个表单,这会使另一个POST submit2但其中没有number字段。因此,您在第23 - 32行中没有number键。

EDIT2: 例如,你可以改变第一个如果是这样的:

if (isset($_POST["submit"])){
    $number = $_POST['number'];
    $x = 0;
    echo "<form method=\"post\">";
    while ($x != $number) {
        echo "Enter score: <input type=\"text\" name=\"".'a'.$x."\"><br>";
        $x = $x + 1;
    }
    echo "<input type=\"hidden\" name=\"number\" value=\"" . $number . "\">";
    echo "<input type=\"submit\" name=\"submit2\"></form>";
}

答案 1 :(得分:0)

请尝试此代码。它会删除你的错误

 <html>
    <head>
    </head>
    <body>
      <form method="post">
        Enter how many values you would like to enter:
        <input type="number" name="number">
        <input type="submit" name="submit">
      </form>
      <?php
      $number = 0;
      $result = 0;
      if (isset($_POST["submit"]) && isset( $_POST['number']) ){
        $number = $_POST['number'];
        $x = 0;
        echo "<form method=\"post\">";
        while ($x != $number) {
          echo "Enter score: <input type=\"text\" name=\"".'a'.$x."\"><br>";
          $x = $x + 1;
        }
        echo "<input type=\"submit\" name=\"submit2\"></form>";
      }
      if (isset($_POST["submit2"]) && isset( $_POST['number'])){
        $y = 0;

        $number = $_POST['number'];

        while ($y != $number){
          $value = $_POST["a".$y];
          $result = $result + $value;
          $y = $y + 1;

        echo $result;
          }
      }
      ?>
    </body>
    </html>