Php 将特定字段收集到数组中

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=

类为“row”的每个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>
谢谢

更新:
表单将使用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组件:

根据给出的答案(包括我的答案),我不确定您是想在jquery中还是在php中收集变量(表单发布后)。抱歉,我会澄清这篇文章。嗨,亚当。我如何从PHP端知道发布了哪些数组?从我看到的情况来看,每个“行”都不会以任何方式分组?@Industrial-这些行是根据每个数组的索引(从0开始)分组的。我会更新我的答案我的意思是每一行都是分组的,但是我想把所有的行收集到一个大数组中,这样我就可以在这个大数组上用PHP进行foreach。嗨,亚当,这太棒了!这是否可以在不使用var_dump的情况下实现?我需要将所有行分组到一个我知道名称的数组中,因为我想通过POST数据传递多个数组您不需要var_dump-我只是用它来说明变量的输出,所以您知道您得到了什么Hanks,我知道,但是在我的原始帖子中,我在整理示例时忽略了它。我的意思是,我回答了你的问题,并将id更改为class:)检查元素名称,它们将提供所需的效果。
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>