gpt4 book ai didi

php - 有没有办法通过 Kohana 的内置 session 处理程序从多维数组中设置和获取值?

转载 作者:行者123 更新时间:2023-12-02 07:50:52 26 4
gpt4 key购买 nike

在 PHP 中,我经常执行以下操作:

$_SESSION['var']['foo'] = array('bar1' => 1, 'bar2' => 2);
// ...
$_SESSION['var']['foo']['bar2'] = 3;
// ...
echo $_SESSION['var']['foo']['bar2']; // 3

我想知道在与 Kohana 的 session 中存储多维数组的推荐方法是什么。

我知道我可以执行以下操作,但我不知道如何使其与多维一起使用,特别是获取部分:

Session::instance()->set('var', array(
'foo' => array(
'bar1' => 1,
'bar2' => 2,
),
));
// ...
// how do I set just bar2?
// ...
// this gets the whole array, but how do I get just bar2?
Session::instance()->get('var');

所以,问题是:

  1. 如何设置只有 bar2?
  2. 如何得到 bar2?

有没有一种方法可以在 Kohana 3 中执行这些操作?

我很想使用 native session ,但我们正在尝试使用数据库 session 。

最佳答案

简短的回答是,考虑到 Kohana session 的当前实现,没有办法做到这一点。您有两种选择:

获取和设置整个数组,每次编辑您需要的位:

$array = Session::instance()->get('var');
$array['foo']['bar2'] = 'baz';
Session::instance()->set('var', $array);

或者您覆盖 Kohana_Session->get() 和 ->set() 方法(定义为 here on github )。请记住,鉴于 Kohana 中出色的“分层”文件系统,您实际上可以扩展该类,只修改您需要的方法,而无需编辑核心 Kohana 代码。

我的想法是更改 $key 参数以接受字符串或数组。如果你传入一个数组,它应该将数组中的每个元素解释为一个“更深”的层次。

$key = array('var', 'foo', 'bar2');
Session::instance()->get($key, $default);
Session::instance()->set($key, 'baz');

关于php - 有没有办法通过 Kohana 的内置 session 处理程序从多维数组中设置和获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3947567/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com