将特定字段收集到数组中

时间:2010-05-04 16:22:22

标签: php jquery json arrays

每个具有“行”类的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循环的操作。

3 个答案:

答案 0 :(得分:5)

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

<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'
    ),
    ...
)

答案 1 :(得分:0)

<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更改为类,因为重复使用相同的ID是无效的HTML。

答案 2 :(得分:0)

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