2015-06-24 61 views
1

假设我有下面的一组数据的会话:Zend框架2 - 包含多维数组

$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; 

但我不知道如何才能调用值。假如我想foo​​2的,我会做

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

期待它会输出 '2',但我得到一个错误,而不是:

所以我试图做

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

但这种回报另一个错误。

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

+0

你从'$ session-> foobar ['foo'] ['foo2']'得到了什么错误?我本来期望能够工作。 –

+0

@蒂姆喷泉非常奇怪:我现在没有错误...我昨天得到非法抵消。 – ImLearningZF2

回答

1

已解决。首先,我创建父抵消这种方式:

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

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

我可以从那里创造任何东西:

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

等回事。我希望这会帮助别人

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

: 为了得到他们,这是那么容易,因为它应该。