【问题标题】:Zend Framework 2 - Sessions containing multidimensional arraysZend Framework 2 - 包含多维数组的会话
【发布时间】:2015-06-24 18:34:45
【问题描述】:

假设我有以下一组数据:

$foobar = array(
    "foo" => array (
       "foo1" => 1,
       "foo2" => 2,
       "foo3" => 3
    ),
    "bar" => array (
        "bar1" => 1,
        "bar2" => 2,
        "bar3" => 3,
    ),
);

在标准 PHP 中,我可以执行以下操作:

$_SESSION['foobar'] = $foobar;

然后,调用值,以 bar2 为例:

$_SESSION['foobar']['bar']['bar2'];

但是在 Zend Framework 2 中这样做呢?

我已经为会话管理器设置了所有参数的引导程序,并且已经设置了容器。会话被创建。所以,如果我这样做,例如:

$session = new Container('foobar');

并在其中输入一个值:

$session->foo1 = 1;

这行得通。如果我决定将数组作为会话变量,则相同:

//placing the $foobar array defined before
$session->foobar = $foobar;

但我不知道如何调用值。假设我想要 foo2,我会这样做

echo $session->foobar->foo->foo2;

期望它会输出“2”,但我得到一个错误:

所以我试着做

echo $session->foobar['foo']['foo2'];

但这会返回另一个错误。

所以现在我不知道我应该如何收集这些数据,或者我如何以不同的方式存储会话变量。我需要这个来制作购物车,所以 foo 和 bar 是不同的产品。我怎么能这样做?

【问题讨论】:

  • 您从$session->foobar['foo']['foo2'] 得到什么错误?我原以为这会奏效。
  • @Tim Fountain 非常奇怪:我现在没有错误......我昨天得到了非法偏移。

标签: php arrays session zend-framework shopping-cart


【解决方案1】:

解决了。首先,我以这种方式创建了父偏移量:

$session->offsetSet("foobar", new ArrayObject());

(您的脚本顶部需要use Zend\Stdlib\ArrayObject;)。

现在我可以从那里创建任何东西:

$session->foobar->foo = "foo1";
$session->foobar->bar = "bar1";

等等。 要获得它们,就这么简单:

echo $session->foobar->foo; //returns foo1

我希望这会对某人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-20
    • 2017-10-09
    • 1970-01-01
    • 2015-03-23
    • 1970-01-01
    • 1970-01-01
    • 2013-01-14
    • 1970-01-01
    相关资源
    最近更新 更多