如何使用会话将数据存储在数组中?

问题描述:

我必须使用会话存储表格数据,即卷号和学生在数组中的标记。 当我这样做时,在提交表单后,以前的值将被新值覆盖。 我想用一个新的索引将数组中的值添加到前一个值旁边。如何使用会话将数据存储在数组中?

这里是我的形式

<form action="#" method="post"> 
    Roll No:<input type="text" name="rollno" value="" id="rollno" /> 
    Marks:<input type="text" name="marks" value="" id="marks" /> 
    <input type="submit" name="submit" value="Submit" onclick="return validate();" /> 
</form> 

<?php 
session_start(); 
//session_destroy(); 
$_SESSION['status'] = array(); 

$_SESSION['status'][] = @$_POST['rollno']; 
$_SESSION['status'][] = @$_POST['marks']; 

print_r($_SESSION['status']);      
?> 

我怎样才能做到这一点,请帮助我吗?然后

$_SESSION['key'] = serialize($yourArray); 

当你要添加的东西,只是反序列化它,修改:

+0

您能解释一下您准备添加新数据的位置吗?接下来是有点模糊。添加数组的前一个和新状态的示例。 – vedarthk 2013-03-14 12:41:57

+0

它是'没有'或'没有'吗? – Antony 2013-03-14 12:45:04

+0

使用'isset'来检查是否设置了变量,而不是使用'@'来抑制通知。 – insertusernamehere 2013-03-14 12:45:51

这是一种方式......

<?php 
session_start(); 
$i=0; 

while(isset($_SESSION[$i])) $i++; 

$_SESSION[$i]['rollno'] = $_POST['rollno']; 
$_SESSION[$i]['marks'] = $_POST['marks']; 
- 
- 
- 
?> 
+0

你好,先生,谢谢你的回复,但它不工作。实际上,我必须在表格中逐一插入10个学生记录,并在同一页面上显示输出。当我添加第一个学生记录然后显示输出,但是当我插入第二个学生记录时,它只显示第二个学生记录。我也想显示以前的记录。 – 2013-03-15 06:20:51

+0

发布您的确切代码 – 2013-03-15 10:24:55

您可以添加一个序列化的阵列到会话这样并放回到你的会话中。

我将与样品解释

<?php 
    session_start(); 

    $_SESSION['data']= array(); 
    $details1=array('pappu','10'); 
    $details2=array('tippu','12'); 

    array_push($_SESSION['data'],$details1); 
    array_push($_SESSION['data'],$details2); 

    foreach ($_SESSION['data'] as $eacharray) { 
    while (list(, $value) = each ($eacharray)) { 
     echo "Value: $value<br>\n"; 
    } 
    } 

?> 

输出

值:pappu
值:10
值:蒂珀
值:12

可以尝试

$rollArray=array($_POST['rollno'],$_POST['marks']); 
array_push($_SESSION['status'], $rollArray); 


foreach ($_SESSION['status'] as $eacharray) { 
    while (list(, $value) = each ($eacharray)) { 
     echo "Value: $value<br>\n"; 
    } 
    } 
+0

您好先生,感谢您的回复,但它不工作。实际上,我必须在表格中逐一插入10个学生记录,并在同一页面上显示输出。当我添加第一个学生记录然后显示输出,但是当我插入第二个学生记录时,它只显示第二个学生记录。我也想显示以前的记录。 – 2013-03-15 06:44:05