在Session PHP中存储二维数组

时间:2015-11-28 20:58:36

标签: php arrays session

我现在一直在寻找这个解决方案,并找到了之前针对我同样问题制作的一些帖子。但我仍然无法解决我的问题。现在已经好几天了,我仍然无法保持HTML表单中的数组数据存储在会话中。它每次都被覆盖。我的编码有什么问题吗?

这是我处理输入的PHP文件

views: {
    "header": {
        templateUrl: "app/views/shared/header.html",
        controller: "MainController",
        controllerAs: "main"
    },
    "content": {
        template: "<ui-view />",
        controller: "MainController",
        controllerAs: "main"
    }
}

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

2 个答案:

答案 0 :(得分:0)

你缺少session_start()来启动会话本身。

制作$_SESSION['data'] = [your_array];等问题并将其作为isset($_SESSION['data'])

进行测试

查看此页面http://php.net/manual/en/ref.session.php

答案 1 :(得分:0)

只有在提交表单后才能设置$_SESSION['data']。这是测试名称和宗教信息是否已发送的示例(您可以测试所有变量以确定):

session_start();

if ( isset( $_POST['name'] && isset( $_POST['religion'] ) {
    $student1=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);
?>

现在$_SESSION['data']只有在您发布名称和宗教信仰的表单时才会更改!

修改 如果您想在会话中添加多个学生,请尝试以下方法:

$_SESSION['data'][]=$student1;

或简单地说:

$_SESSION['data'][]=$_POST;

要检索数据,请执行以下操作:

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

for( $i = 0; $i < count( $_SESSION['data'] ); $i++ )
    echo 'Name: ' . $_SESSION['data'][$i]['Name'];

编辑2 从$ student1变量

中删除了额外的数组