在PHP会话中存储二维数组

在PHP会话中存储二维数组,php,arrays,session,Php,Arrays,Session,我搜索这个解决方案已经有一段时间了,找到了一些以前针对我的同一个问题制作的线程。但我仍然无法解决我的问题。已经过了好几天了,我仍然无法将HTML表单中的数组数据保存到会话中。每次都会被覆盖。我的编码有问题吗 这是我处理输入的PHP文件 <?php if(!isset($_SESSION)){ session_start(); } $student1 = array( array( 'Name'=>$_

我搜索这个解决方案已经有一段时间了,找到了一些以前针对我的同一个问题制作的线程。但我仍然无法解决我的问题。已经过了好几天了,我仍然无法将HTML表单中的数组数据保存到会话中。每次都会被覆盖。我的编码有问题吗

这是我处理输入的PHP文件

<?php 
    if(!isset($_SESSION)){
        session_start();
    }

    $student1 = array(
        array(
            'Name'=>$_POST['name'],
            'Matric-No'=>$_POST['matric'],
            'Gender'=>$_POST['gender'],
            'Day'=>$_POST['DOBDay'],
            'Month'=>$_POST['DOBMonth'],
            'Year'=>$_POST['DOBYear'],
            'Citizen'=>$_POST['citizen'],
            'Marital'=>$_POST['kahwin'],
            'Religion'=>$_POST['religion'],
            'Active'=>$_POST['active'],
            'Year-of-Study'=>$_POST['Cyear'],
            'ID-Number'=>$_POST['idno'],
            'Email'=>$_POST['email']
        )
    );

    $_SESSION['data'] = $student1;

    print_r($_SESSION);

?>


*编辑:很抱歉。。。我忘了提到我有一个javascript验证器来查看用户在提交之前是否成功地输入了每个表单。我的问题是,当我刷新或返回表单站点时,以前的数据将不在那里,如果输入了任何新数据。以前的数据将被覆盖

您缺少启动会话本身的会话\u start()

并进行如下查询:
$\u SESSION['data']=[your_array]和测试为
isset($\u会话['data'])


选中此页

仅当表单已提交时,才必须设置
$\u会话['data']
。下面是一个测试名称和宗教是否已发送的示例(您可以测试所有变量以确保):

现在,
$\u会话['data']
只有在您发布带有名称和宗教的表单时才会更改

编辑: 如果要在课程中添加多个学生,请尝试以下操作:

$_SESSION['data'][]=$student1;
foreach ( $_SESSION['data'] as $data )
    echo 'Name: ' . $data['Name'];
或者简单地说:

$_SESSION['data'][]=$_POST;
要检索数据,请执行以下操作:

$_SESSION['data'][]=$student1;
foreach ( $_SESSION['data'] as $data )
    echo 'Name: ' . $data['Name'];

for($i=0;$i

编辑2从$student1变量中删除了额外数组

我不太理解您的问题。你有什么错误吗?你预计会发生什么事情而目前还没有发生?
$\u POST
数组是空的还是用期望值填充的?数据插入得很完美,但问题是,如果要插入另一个表单,它将不会保留当前数据。我正试图制作一个表格,将其数据保存在一个数组中,这样它就可以从收集的数据中计算出一些东西,比如他们的公民身份、宗教信仰、年龄等等。我有一个JavaScript验证器来查看用户是否在表单中输入了所有数据。我很抱歉没有包括这些数据,我有一个JavaScript来验证表单,查看用户是否已经完全输入了所有需要的表单。我的问题是,当我刷新或返回表单站点时,以前的数据将不在那里,并且如果输入了任何新数据。以前的数据将被覆盖。您是否正在寻找类似
的内容!这样我就可以在会话数组中存储3个学生信息,并且可以在不被自身覆盖的情况下获取这些信息。我之所以要把这些信息拿回来,是因为我可以管理和统计男女学生的数量,他们的平均年龄,公民等等,真是太棒了!这解决了我的问题!但是我没有做foreach和for循环。当我这样做时,它只显示了第一个插入的值,然后给了我这个错误:注意:未定义的索引:C:\xampp\htdocs\studentprocess.php中的Name,在第15行Name:但是,尽管如此,我只使用print\u r($\u SESSION)更改了它;它创造了奇迹。伙计,我欠你很多人情。谢谢大约两天前,我就一直被这个问题困扰着,直到今天我才能继续前进。谢谢你,好先生!我非常感激。我希望能对你竖起大拇指,但我的声誉仍然很好。真对不起,伙计