【问题标题】:PHP multiple query string values to arrayPHP多个查询字符串值到数组
【发布时间】:2014-10-11 21:45:28
【问题描述】:

我有一个表单,它允许用户添加相同输入字段的多个“行”,基本上,要求用户指定他们拥有的孩子的数量。

表格很简单,如下(为阅读目的而缩写):

<form name="guestform" method="post">
   ....
   <div class="children-part">
      <ul>
         <li>&nbsp;<li>
         <li>
            <label>Name:</label>
            <input type="text" name="childfirstname" />
         <li>
         <li>
            <label>&nbsp;</label>
            <input type="text" name="childlastname" />
         <li>
         <li>
            <label>Gender:</label>
            <input type="radio" name="childgender" value="M" /> <label>Male</label>
            <input type="radio" name="childgender" value="F" /> <label>Female</label>
         <li>
      </ul>
   </div>
   ....
</form>

我在页面上有一个[+] 按钮,该按钮通过 JavaScript 为第 n 个条目(通常最多 3 个)克隆 div.children-part 块。

我获取表单并序列化数据,以便我可以通过 AJAX 调用将其传递给要插入数据库的 Web 服务。现在,对于单个孩子来说,很容易获取查询字符串值,但对于多个孩子来说,它变得更加复杂......

复杂查询字符串示例:

&childfirstname=1&childlastname=1&childfirstname=2&childlastname=2&childfirstname=3&childlastname=3&childfirstname=4&childlastname=4

我的问题是,有没有办法在不编写复杂循环语句的情况下将这些值放入数组中?

我目前在 $ 字符上将它们拆分为一个数组,然后确定该数组包含多少单个字符串文字,然后分别迭代每个字符串以构建我需要的数据的多维数组(不止一个孩子),但是对于这么简单的事情,这感觉有点矫枉过正?

【问题讨论】:

  • 您是否尝试将[] 添加到name?然后您应该可以通过$_GET 访问它们。但请注意,键可能会混淆,因此在创建查询时添加它们可能是有意义的
  • 我不确定这是否是您要查找的内容,但您可以使用以下数组命名表单字段:&lt;input name="childfirstname[]"&gt;。每个字段将作为一个数组发布:foreach ($_POST['childfirstname'] as $key =&gt; $value) { ... }.
  • 当然:$...我会尽快尝试。感谢您对混合部分的提醒,会留意的。谢谢
  • 在查询字符串 childlastname=1&amp;childlastname=2 中,单个结果变量 $_POST['childlastname'] 的值将是 2,因为查询字符串中的第一次出现被覆盖。

标签: javascript php arrays query-string


【解决方案1】:

添加[] 应该允许您以并行数组的形式迭代和访问数据。另一种方法是为每个“孩子”添加和维护一个索引并增加它。例如name="childfirstname[currentIndex]" 每次添加一行时,都会更新和递增一个包含当前索引的 javascript 变量。

<form name="guestform" method="post">
   ....
   <div class="children-part">
      <ul>
         <li>&nbsp;<li>
         <li>
            <label>Name:</label>
            <input type="text" name="childfirstname[]" />
         <li>
         <li>
            <label>&nbsp;</label>
            <input type="text" name="childlastname[]" />
         <li>
         <li>
            <label>Gender:</label>
            <input type="radio" name="childgender[]" value="M" /> <label>Male</label>
            <input type="radio" name="childgender[]" value="F" /> <label>Female</label>
         <li>
      </ul>
   </div>
   ....
</form>

【讨论】:

    猜你喜欢
    • 2014-12-21
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    • 2017-04-15
    • 2020-02-23
    • 2013-03-29
    • 1970-01-01
    相关资源
    最近更新 更多