如何将$ _POST变量分组到正确的数组中

时间:2013-11-20 07:33:46

标签: php arrays foreach

我使用foreach循环生成以下html表单。在$ people内,有4个$ person数组,因此下面的输入集重复4次。

<form action="handler.php" method="post">
  <?php foreach($people as $person) { ?>
  <input type="text" name="first_name">
  <input type="text" name="middle_name">
  <input type="text" name="last_name">
  <input type="hidden" name="<?php echo $person['id'];?>
  <?php } ?>
</form>

提交时,它只传递最后一个,我希望它将每个集合($ person)作为一个数组传递(如下所示),这样我就可以有一个很好的数组,每个都可以工作用。

Array([0]=>Array(['first_name']=>'James'['middle_name']=>'Green'['last_name']=>'McIntosh')
  [1]=>Array(['first_name']=>'Bian'['middle_name']=>'Chip'['last_name']=>'Simpson)'

等。

但是当我回来时,我无法弄清楚如何让每个人进入一个单独的阵列。我认为它可能需要一些与“name”属性有点棘手的东西,但还未能让它工作。

2 个答案:

答案 0 :(得分:1)

这可能就是你要找的东西:

<form action="handler.php" method="post">
  <?php foreach($people as $person) {
    echo sprintf('<input type="text" name="first_name[%s]">', $person['id']);
    echo sprintf('<input type="text" name="middle_name[%s]">', $person['id']);
    echo sprintf('<input type="text" name="last_name[%s]">', $person['id']);
  } ?>
</form>

答案 1 :(得分:1)

<?php
    foreach ($people as $person) {
        printf('<input type="text" name="person[%d][first_name]">',  $person['id']);
        printf('<input type="text" name="person[%d][middle_name]">', $person['id']);
        printf('<input type="text" name="person[%d][last_name]">',   $person['id']);
    }
?>

然后:

var_dump($_POST['person']);