首页 > 解决方案 > 分步设置会话

问题描述

是否可以在不同时间将多个会话元素设置为同一个会话?我有 2 个班级,每个班级应该设置 2 个会话元素。我得到的是一个空数组。我session_start()在每一页上使用。

此外,我可以在单个类中成功设置会话,但是在从每个类中设置时返回一个空数组。

// User class
$_SESSION['user'] = array('id' => 1);
$_SESSION['user'] = array('name' => 'Tim Miller');

// Part class
$_SESSION['user'] = array('model' => '12311');
$_SESSION['user'] = array('part' => 'AA34F');

编辑:

这是我要创建的数组:

Array (
  [user] => Array (
    [id] => 1
    [name] => Tim Miller
    [model] => 12311
    [part] => AA34F
    [order] => 119026
    [serial] => 12001923S3
  )
)

元素 0 和 1 应在用户类中设置 元素 2-3 应在部件类中设置 元素 4-5 应在串行类中设置

标签: phpsession

解决方案


您可以设置它,但需要使用不同的方法。您可以创建具有不同值的会话数组。

您必须在需要使用会话的每个文件的顶部编写 session_start()。

session_start();

// User class
$_SESSION['user'][] = array('id' => 1);
$_SESSION['user'][] = array('name' => 'Tim Miller');

// Part class
$_SESSION['user'][] = array('model' => '12311');
$_SESSION['user'][] = array('part' => 'AA34F');

print_r( $_SESSION['user'] );

输出如下所示:

Array
(
    [0] => Array
        (
            [id] => 1
        )

    [1] => Array
        (
            [name] => Tim Miller
        )

    [2] => Array
        (
            [model] => 12311
        )

    [3] => Array
        (
            [part] => AA34F
        )
)

如何创建此数组由您决定。

编辑:

要获得您想要的格式输出并稍后在不同文件中向数组添加值,您可以尝试如下:

// Your code here!
session_start();

// User class
$_SESSION['user'][] = array('id' => 1, 'name' => 'Tim Miller');

// Part class
$key = -1
$key = array_search( 1, array_column($_SESSION['user'], 'id') );
// Here 1 in array_search is id of user your can use $id to add data to correct user's by id.

if( $key > -1 ) {
    $_SESSION['user'][ $key ] = array_merge( $_SESSION['user'][ $key ], array('model' => '12311', 'part' => 'AA34F') );
}


print_r( $_SESSION['user'] );

这将为您提供以下输出:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => Tim Miller
            [model] => 12311
            [part] => AA34F
        )
)

推荐阅读