2013-06-05 29 views
0

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

回答

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[]"> 

这样的形式让你输入forenames和姓氏最多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]; 
} 
+0

能否请您解释一下什么是 “为$键=> $值” 是指?我查了一下,并没有真正理解它? – Asher

+0

well $ key是key,$ value是value,所有数组元素都是一对,一键一个值 – 2013-06-05 08:58:38

+0

$ key是数组索引,$ value是实际数组元素吗? – Asher

相关问题