将可变数量的POST数组变量发送到它们自己的数组

时间:2016-03-28 14:35:08

标签: php

我有一个动态表单,允许用户根据需要创建任意数量的表单元素 - 然后提交它们。为此,我已将输入名称准备为类似

的数组
<input name="title[]" ...

并发布它们给我输出像

Array
(
[day] => 0
[project_id] => 5
[submit] => publish
[id] => Array
    (
        [0] => 4
        [1] => 5
    )

[title] => Array
    (
        [0] => Step 1
        [1] => Step 2
    )

[max_vol] => Array
    (
        [0] => 2
        [1] => 3
    )

[description] => Array
    (
        [0] => df dofi dofidfoi 
        [1] => dfvpdofvdpfo osd pod 
    )

)

我已经创建了一些允许我像这样抓取帖子数组的东西

foreach( $_POST as $post_key ) {
    // ignore non-array post variables
    if( is_array( $post_key ) ) {
        foreach( $post_key as $form_value ) {
            echo "$form_value\n";
        }
    }
}

/* ouputs...
4
5
Step 1
Step 2
2
3
df dofi dofidfoi 
dfvpdofvdpfo osd pod 
*/

很好地对数组中的非数组进行排序,但我无法弄清楚如何获取这些可变数量的已创建表单元素并将它们准备成一个类似于......的数组变量

Array
(
  [0] => Array
  (
      'id' => 4, 'title' => 'Step 1', 'max_vol' => '2', 'description' => 'df dofi dofidfoi'
  ),
  [1] => Array
  (
      'id' => 5, 'title' => 'Step 2', 'max_vol' => '3', 'description' => 'dfvpdofvdpfo osd pod'
  ),
  // could be more or less elements...
);

(我最终会将这些数组传递给MySQL查询构建器函数)。

感谢。

2 个答案:

答案 0 :(得分:1)

迭代一些重要的$_POST - 数组键,例如 - id并从其他$_POST获取值 - 具有相同索引的数组:

$values = array();
foreach ($_POST['id'] as $k => $v) {
    $values[] = array(
        'id' => $v,
        'title' => $_POST['title'][$k],
        'max_vol' => $_POST['max_vol'][$k],
        'description' => $_POST['description'][$k],
    );
}

print_r($values);

答案 1 :(得分:1)

如何创建一个超出foreach循环范围的变量

php_value max_execution_time -1