2

我有一个包含一个人的名字和姓氏的表格。用户可以使用链接添加多个人,该链接通过 JS 创建新的输入字段。以下是包含 2 个人的表单示例:

<form action="" method="post">
    <input type="text" class="required" name="people[first][]" />
    <input type="text" class="required" name="people[last][]" />

    <input type="text" class="required" name="people[first][]" />
    <input type="text" class="required" name="people[last][]" />

    <input type="submit" name="submit">
</form>

我试图找出一种将这些数据插入数据库的方法。我试过使用:

foreach ($_POST['people'] as $person) {
  foreach ($person as $value) {
    echo $value . '<br/>';
  }
}

..这导致

名字 1
名字 2
姓氏 1
姓氏 2

我试图以某种方式对结果进行分组,以便我可以为每个first name x+last name x组合插入一个新行。

4

2 回答 2

4

像这样创建输入元素:

<input type="text" name="people[0][first]" />
<input type="text" name="people[0][last]" />
<input type="text" name="people[1][first]" />
<input type="text" name="people[1][last]" />

在您的 PHP 中:

foreach ($_POST['people'] as $person) {
  echo $person['first'].' '.$person['last'].'<br />';
}
于 2012-06-12T17:47:44.137 回答
1

$_POST['people']['first']是一个名字数组。
$_POST['people']['last']是一个姓氏数组。

您可以将它们合并到一个数组中,如下所示:

$people = $_POST['people'];
$length = count($people['first']);
for($i = 0; $i < $length; $i++)
    $temp[] = array('first' => $people['first'][$i], 'last' => $people['last'][$i]);
$people = $temp;

生成的数组$people将是关联数组的数组,可能如下所示:

Array
(
    [0] => Array
        (
            [first] => Jim
            [last] => Smith
        )

    [1] => Array
        (
            [first] => Jenny
            [last] => Johnson
        )

)

这相当于您通过修改 HTML 获得的数组,正如 bsdnoobz 所展示的那样,您也可以这样做。遍历它也是一样的:

foreach ($people as $person) {
    echo $person['first'] . ' ' . $person['last'] . '<br />';
}
于 2012-06-12T17:49:00.547 回答