如何多次提交单个表单值,并在每次刷新页面时将其存储(保留)在数组中


How to submit a single form value multiple times and store (preserve) them in an array each time that I refresh my page?

尝试1:这显示了我想要实现的目标。相同的数组,但键和值对不同。打印时,它会列出所有键和值。

<?php
$rental[]=array('day'=>1,'rate'=>10);
$rental[]=array('day'=>2,'rate'=>20);
$rental[]=array('day'=>3,'rate'=>30);
$rental[]=array('day'=>4,'rate'=>40);
print_r($rental);
?>

尝试2:现在,我使用一个表单提交多次。我希望每次提交表单时,键和值都存储在一个数组中。但实际情况是,最后一个值对会覆盖前一个值。因此,只显示了一对。到目前为止,我可以在session的帮助下存储它们。但我只是想知道是否有一种方法可以通过php数组在同一页面上实现它?

<?php
$rental[]=array('day'=>$_POST['days'],'rate'=>$_POST['rental']);
print_r($rental);
?>
<form action="#" method="post">
   Number of Days: <input type="text" name="days" value=""><br/>
   Rental rate: <input type="text" name="rental" value=""><br/>
   <input type="submit" name="add_rental_rate" value="Add Rental Rate">
</form>

您可以使用会话来实现您想要的目标,请参阅以下代码:

<?php  
session_start();
if(isset($_POST['days']) && isset($_POST['rental'])){        
$_SESSION['info'][] = array($_POST['days'] => $_POST['rental']);
}
if(isset($_SESSION['info'])) {
for($i = 0; $i < count($_SESSION['info']); $i++) {
  foreach($_SESSION['info'][$i] as $days => $rental){
    echo '<p>' . $days . '<br>';
    echo $rental . '</p>';
 }
} 
}
?>
<form action="#" method="post">
   Number of Days: <input type="text" name="days" value=""><br/>
   Rental rate: <input type="text" name="rental" value=""><br/>
   <input type="submit" name="add_rental_rate" value="Add Rental Rate">
</form>

你应该阅读一些关于会话的文档:

http://php.net/manual/en/intro.session.php