Php 将特定字段收集到数组中
类为“row”的每个div都是根据用户的请求添加的,以便能够一次添加多个项。现在的问题是如何将所有表单收集到一个PHP可以读取的数组中(比如JSON)。我猜已经有了一些简单有效的方法Php 将特定字段收集到数组中,php,jquery,json,arrays,Php,Jquery,Json,Arrays,类为“row”的每个div都是根据用户的请求添加的,以便能够一次添加多个项。现在的问题是如何将所有表单收集到一个PHP可以读取的数组中(比如JSON)。我猜已经有了一些简单有效的方法 <div class="container"> <div class="row"> <input type="text" name="value1" id="textfield" /> <input type="text" name=
<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>
谢谢
更新:
表单将使用PHP进行处理,能够在特定容器div内容上执行类似于foreach循环的操作将非常棒。为每个输入“组”指定相同的名称,然后在末尾添加方括号
<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中迭代以“重组”行(但首先,我会将字段名更改为field1等,而不是value1):
这将使:
array(
[0] => array(
'field1' => 'value1',
'field2' => 'value2',
'field3' => 'value3'
),
[1] => array(
'field1' => 'value1',
'field2' => 'value2',
'field3' => 'value3'
),
...
)
将id更改为class,因为重复使用同一id是无效的HTML。要将XML转换为JSON,您可以尝试:
- PEAR提供的服务\u Json:
- Zend框架的Zend_Json组件:
var_dump($_POST); // array('value1' = array(...
$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'
),
...
)
<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>