是否可以从输入字段获取数据并将它们存储在PHP中的关联数组中?
例如,如果表单上有两个输入字段。第一个是名字,第二个是姓氏。当我们在两个字段中输入数据时,它应该存储在一个关联数组中。假设我们想要输入数据5次,然后在浏览器上显示所有5个名字及其对应的姓氏。
答案 0 :(得分:1)
使用名称属性
您可以使用表单中的name属性发送数组。
对于您的示例(只有3个名字; - )):
<form action="test.php" method="post">
<input name="first_name[]" value="John">
<input name="first_name[]" value="James">
<input name="first_name[]" value="Jimmy">
<input name="last_name" value="Doe">
<input type="submit">
</form>
如果您提交此内容,$ _POST ['first_name']将是一个数组(test.php):
echo "$_POST['first_name'][0] $_POST['first_name'][1] $_POST['first_name'][2] $_POST['last_name']";
输出:
John James Jimmy Doe
使用explode()
另一种方法是拥有2个输入字段并在服务器上拆分第一个名称:
<form action="test.php" method="post">
<input name="first_name" value="John James Jimmy">
<input name="last_name" value="Doe">
<input type="submit">
</form>
并在test.php中:
$first_names = explode(' ',$_POST['first_name']);
数组将被编入索引。如第一个例子那样回应它们:
echo "$first_names[0] $first_names[1] $first_names[2] $_POST[last_name]";
输出:
John James Jimmy Doe
答案 1 :(得分:0)
使用这样的会话:
<?php
session_start();
if(isset($_POST['lname']) && isset($_POST['marks'])){
$_SESSION['info'][] = array($_POST['lname'] => $_POST['marks']);
}
if(isset($_SESSION['info'])) {
for($i = 0; $i < count($_SESSION['info']); $i++) {
foreach($_SESSION['info'][$i] as $name => $marks){
echo '<p>' . $name . '<br>';
echo $marks . '</p>';
}
}
}
?>
<form action = "<?php echo $_SERVER['PHP_SELF'];?>" method = "POST">
Name:<br>
<input type = "text" name = "lname"><br><br>
Marks:<br>
<input type = "text" name = "marks"><br><br>
<input type = "submit" value = "Submit">
</form>
阅读更多内容: