0

我从一个表单中收到两个数组。在 .php 文件中,我需要将每个数组的值插入到表的一列中。
- 使用 foreach 循环访问一个数组的元素并仅完成一列的插入。当我对下一个数组做同样的事情时,我发现每行中对应的第一列元素为空,而对于第一个数组,对应的第二列元素为空。有没有办法避免这种情况并一个接一个地插入数组元素?
- 我知道 foreach 不能应用于两个数组,所以有没有其他方法可以同时访问两个数组以插入表中?
谢谢。

4

1 回答 1

0

您可以使用 foreach 循环:

 foreach($_POST['someField_1'] as $key => $value)
 {
     $fieldOne = $value;
     $fieldTwo = $_POST['someField_2'][$key];
 }

显然将 _POST 变量更改为您为字段命名的任何内容。只要您的字段名称命名为:name="someField_1[]"并且name="someField_2[]"您可以通过这种方式使用 foreach 循环。

编辑

将此 HTML 用于您的输入表单:

Forename: <input type="text" name="forename[]"> Surname: <input type="text" name="surname[]">
Forename: <input type="text" name="forename[]"> Surname: <input type="text" name="surname[]">
Forename: <input type="text" name="forename[]"> Surname: <input type="text" name="surname[]">

因此,该表格允许您输入最多 3 人的名字和姓氏。每个字段具有完全相同的名称:forename[]surname[]

要检索每个值,您将使用以下 PHP:

foreach($_POST['forename'] as $key => $forename)
{
    echo 'Forename: ' . $forename;
    echo ' ';
    echo 'Surname: ' . $_POST['surname'][$key] . '<br />';
}

这是有效的,因为当您提交一个像forename[],最后带有方括号的字段时,PHP 会自动将其转换为数组。$key是一个从 0 开始的数字,不管有多少字段都会继续。

PHP 使用$key来检索正确的字段。您也可以像这样编写 HTML:

Forename: <input type="text" name="forename[0]"> Surname: <input type="text" name="surname[0]">
Forename: <input type="text" name="forename[1]"> Surname: <input type="text" name="surname[1]">
Forename: <input type="text" name="forename[2]"> Surname: <input type="text" name="surname[2]">

你看我在方括号之间放了一个数字吗?PHP 将检测到这一点并循环遍历数组。

你甚至可以使用for循环:

for($i = 0; $i<count($_POST['forename']); $i++)
{
    echo 'Forename: ' . $_POST['forename'][$i];
    echo 'Surname: ' . $_POST['surname'][$i];
}
于 2013-06-05T08:51:18.673 回答