php - 分步设置会话
问题描述
是否可以在不同时间将多个会话元素设置为同一个会话?我有 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 应在串行类中设置
解决方案
您可以设置它,但需要使用不同的方法。您可以创建具有不同值的会话数组。
您必须在需要使用会话的每个文件的顶部编写 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
)
)
推荐阅读
- sql - 如何选择表格中的数据?
- r - 如何管道 flite 并选择 data.frame
- python - 在 ipyleaflet 地图中以编程方式添加多边形
- python - 我可以制作一个自动点击器,只使用标准库吗?
- html - 文本颜色取决于文本对齐方式
- c# - 如何让 PHP 签署与 C# 完全相同的输入?
- python - 为什么我在使用 Tabula 时会得到一个空的数据框?
- android - 无法打开矢量资产面板android studio 4
- python - 我正在尝试在 google colab 中使用 opencv 调整图像大小,但它抛出错误
- composer-php - 未定义作曲家安装软件包命令