【问题标题】:PHP creating an array from form input fields [closed]PHP从表单输入字段创建一个数组[关闭]
【发布时间】:2012-09-14 00:35:32
【问题描述】:

我正在尝试创建一个数组来存储数字并将它们相加。

<input type="number" name="numbers[]"/>

我在下一行得到一个未定义的变量

foreach($numbers as $number)

我确信这可能是一些基本的东西,但我对 php 比较陌生,非常感谢您的帮助。

【问题讨论】:

    标签: php html forms input name-attribute


    【解决方案1】:

    如果你想得到一个不需要循环的数组的总和,你可以使用array_sum

    例子

    <?php
    if (isset($_POST['numbers'])) {
        echo array_sum($_POST['numbers']);
    }
    
    ?>
    
    <form method="POST">
    <input type="number" name="numbers[]"/>
    <input type="number" name="numbers[]"/>
    <input type="number" name="numbers[]"/>
    <input type="number" name="numbers[]"/>
    <input type="submit" value="add"/>
    </form>
    

    【讨论】:

    • 你能告诉我将传递的实际名称是什么,以检查字段是否实际填写或为空。
    • 它会像这样$_POST['numbers'][0] $_POST['numbers'][1] 等。如果您仍然有问题,请告诉我,以便我可以通过示例更新答案
    • 谢谢我应该可以从那里完成它
    【解决方案2】:

    如果您发布了inputs,您正在从一个页面显示到另一个页面,并且您需要遍历列表,您应该这样设置:

    if (isset($_REQUEST['numbers']) && is_array($_REQUEST['numbers'])) {
      $numbers = $_REQUEST['numbers'];
    
      foreach ($numbers as $number) {
        print $number;
      }
    }
    

    【讨论】:

    • 可以添加 isset($_REQUEST['numbers']) 到那个...
    【解决方案3】:

    再添加一些代码,但这基本上意味着代码中此时还没有声明$numbers。

    在前面添加这一行:

    $numbers = array();
    

    现在它不应该给你这个错误。

    所以现在的问题是,$numbers 应该设置在哪里?为此,我们需要更多信息和代码。

    【讨论】:

      【解决方案4】:

      我不是 PHP 专家,但如果我理解正确并且您尝试将变量放入数组中,您需要说明我会假设数组的哪一部分。我很确定$array[i]$array 是不一样的,如果您尝试将某些东西放入$array,它一次只能容纳一个东西。如果您只是收集某人从表单中输入的一堆数字,那么您可以这样做。

      //For the form
      <form action="formHandler.php" method="post">
        <input type="text" name="number1">
        <input type="text" name="number2">
        //continue in this manner for as many numbers as you need to gather.
      </form>
      
      //for the PHP side of it.
      <?php
        $x=1;
        $numbersArray = array();
        for($i=0; $i<10; $i++){
         $numbersArray[$i] = $_POST['number'.$x];
         $x++;
        }
      //to add them up
      $total=array_sum($numbersArray);
      ?>
      

      我希望这是对的,希望对您有所帮助。

      【讨论】:

      • PHP 有更简洁的方法来做到这一点。有关示例,请参见其他答案。此外,如果您的数组中实际上有 10 个数字,那么您需要从 0 开始循环(首选,imo,因为您不必为数组索引减去 1)或将您的 while 测试更改为 $i
      • 我试图快速标记它,所以它不符合标准。我同意关于 for 循环和关于 i 的那一点,但就像我说的,我不是专家,我忘记了正确的 for 循环语法,所以我只是在运行 while 循环。我不知道 array_sum 的事情,这很酷。
      • 你应该可以编辑你的答案。
      • @GreenMatt 我对其进行了编辑以使其更好,现在我参加了 PHP 课程:D 感谢您提供代码建议。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-26
      • 1970-01-01
      • 2021-10-16
      相关资源
      最近更新 更多