【问题标题】:Why I am getting " Invalid argument supplied for foreach()"?为什么我收到“为 foreach() 提供的参数无效”?
【发布时间】:2016-02-01 10:49:06
【问题描述】:

我在php中有两个页面,第一个包含一个表单:

<form method="post" action="addnames.php">
   <input type="text" name="name" placeholder="Name" /><br />
   <input type="text" name="name" placeholder="Name" /><br />
   <input type="text" name="name" placeholder="Name" /><br />
   <input type="text" name="name" placeholder="Name" /><br />

   <input type="submit" value="Done" />
</form>

这会将数据带到我使用 foreach 以这种方式读取请求的其他 php 页面:

 foreach($_REQUEST['name'] as $name){ 
     //MY CODE
 }

那么问题是什么?

【问题讨论】:

    标签: php


    【解决方案1】:

    如果您想将name 作为数组获取,那么您需要更改表单代码:

    <form method="post" action="addnames.php">
       <input type="text" name="name[]" placeholder="Name" /><br />
       <input type="text" name="name[]" placeholder="Name" /><br />
       <input type="text" name="name[]" placeholder="Name" /><br />
       <input type="text" name="name[]" placeholder="Name" /><br />
    
       <input type="submit" value="Done" />
    </form>
    

    现在您可以在post 请求中获取所有名称。

    【讨论】:

    • 支持,因为我不知道你能做到这一点,这很酷。
    【解决方案2】:

    因为只有一个name 被发送到服务器,而且它是一个字符串而不是一个数组。要发送名称数组,请将输入名称更改为 name="name[]" 以将其标识为数组

    <input type="text" name="name[]" placeholder="Name" />
    ...
    

    【讨论】:

      【解决方案3】:

      试试这个代码:

      <?php
      foreach($_REQUEST['name'] as $name){ 
       //MY CODE
      }?>
      
      <form method="post" action="addnames.php">
         <input type="text" name="name[]" placeholder="Name" /><br />
         <input type="text" name="name[]" placeholder="Name" /><br />
         <input type="text" name="name[]" placeholder="Name" /><br />
         <input type="text" name="name[]" placeholder="Name" /><br />
      
         <input type="submit" value="Done" />
      </form>
      

      【讨论】:

        猜你喜欢
        • 2020-09-26
        • 1970-01-01
        • 1970-01-01
        • 2011-05-17
        • 2011-02-07
        相关资源
        最近更新 更多