【问题标题】:Collect specific fields to an array将特定字段收集到数组中
【发布时间】:2010-05-04 16:22:21
【问题描述】:

每个具有“行”类的 div 都是根据用户的请求添加的,以便能够一次添加多个项目。所以现在的问题是我将如何将所有表单收集到 PHP 可以读取的数组中(例如 JSON)。我猜已经有一些简单有效的方法可以做到这一点?

<div class="container">
    <div class="row">
        <input type="text" name="value1" id="textfield" />
        <input type="text" name="value2" id="textfield" />
        <input type="text" name="value3" id="textfield" />
    </div>

</div>

这是我想从所示示例中实现的目标:

array( 
    array ('value1' => '',
           'value2' => '',
           'value3' => '')
);

谢谢!

更新: 该表单将使用 PHP 处理,并且能够对特定的 container-div 内容执行类似 foreach 循环之类的操作。

【问题讨论】:

  • 从给出的答案(包括我的)中,我不确定您是要在 jquery 中还是在 php 中收集变量(一旦发布表单)
  • 抱歉,会澄清帖子。

标签: php jquery json arrays


【解决方案1】:

为每个输入“组”赋予相同的名称,然后在末尾添加方括号

<div class="container">
    <div class="row">
        <input type="text" name="value1[]" id="textfield" />
        <input type="text" name="value2[]" id="textfield" />
        <input type="text" name="value3[]" id="textfield" />
    </div>
    <div class="row">
        <input type="text" name="value1[]" id="textfield" />
        <input type="text" name="value2[]" id="textfield" />
        <input type="text" name="value3[]" id="textfield" />
    </div>
</div>

当您发布表单时,您的 php $_POST 变量将包含 value1value2value2 的数组:

var_dump($_POST); // array('value1' = array(...

然后您可以遍历以“重新组合”PHP 中的行(但首先,我将字段名称更改为 field1 等而不是 value1):

$rows = array(); // set up an empty array to hold your rows

// loop through each POST var
foreach($_POST AS $key=>$field) {
    if(is_array($field)) {
        foreach($field AS $rowIndex=>$fieldValue) {
            $rows[$rowIndex][$field] = $fieldValue; // put the value in a the array by row, field
        }
    }
}

var_dump($rows);

这将给出:

array(
    [0] => array(
        'field1' => 'value1',
        'field2' => 'value2',
        'field3' => 'value3'
    ),
    [1] => array(
        'field1' => 'value1',
        'field2' => 'value2',
        'field3' => 'value3'
    ),
    ...
)

【讨论】:

  • 嗨,亚当。我如何从 PHP 端知道发布了哪些数组?据我所知,每个“行”都不会以任何方式分组?
  • @Industrial - 行按每个数组的索引分组(从 0 开始)。我会更新我的答案
  • 我的意思是每一行都被分组,但我想将所有行收集到一个大数组中,这样我就可以在 PHP 中对大数组进行 foreach。
  • 嗨,亚当,太好了!这是否可以在不使用 var_dump 的情况下做到这一点?我需要将所有行分组到一个我知道名称的数组中,因为我想通过 POST 数据传递多个数组
  • 你不需要 var_dump - 我只是用它来说明变量的输出,所以你会知道你得到了什么
【解决方案2】:
<div class="container">
    <div class="row">
        <input type="text" name="value[0][value1]" class="textfield" />
        <input type="text" name="value[0][value2]" class="textfield" />
        <input type="text" name="value[0][value3]" class="textfield" />
    </div>
    <div class="row">
        <input type="text" name="value[1][value1]" class="textfield" />
        <input type="text" name="value[1][value2]" class="textfield" />
        <input type="text" name="value[1][value3]" class="textfield" />
    </div>
</div>

将 id 更改为 class,因为重复使用相同的 id 是无效的 HTML。

【讨论】:

  • 谢谢,我知道这一点,但在我的原始帖子中整理示例时忽略了它。
  • 我的意思是,我回答了你的问题并且将 id 更改为 class :) 检查元素名称,它们会产生预期的效果。
【解决方案3】:

要将 XML 转换为 JSON,您可以尝试:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-03
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-19
    相关资源
    最近更新 更多