阵列到阵列中的Zend会议推对象

问题描述:

我对会话对象推阵列阵列的一些例子:阵列到阵列中的Zend会议推对象

class someClass extends someOtherOne { 

...////// some other code here that starts session and creates namespace 

    public function __add2Session($a,$b) { 

    $namespc = $this -> __getnewNameSpace(); //returns a Zend Session Namesapce (object) 

     if (!isset($namespc -> {$a})) { $namespc -> {$a} = array(); } 

      array_push($namespc -> {$a}, $b); 

     } 

    } 


...///////////// 


$item=array(1=>"one",2=>"two",3=>"three",4=>"four",5=>"five",6=>"six",7=>"seven"); 

$k = new someClass(); 
$cart = new Zend_Session_Namespace('Cart'); 
$k -> __add2Session("items",$item); 

结果是,当我重新加载页面几次 - 的$cart -> items在会话中值变被覆盖并且不被填充。有人可以解释为什么会发生,我该如何解决这个问题?

我想有$cart -> items是一个“阵中阵”,如:

$cart -> items = array(array(1=>"one",2=>"two"), array(1=>"two",2=>"three")); 

哪个版本的PHP您使用的?

这可能是因为你必须首先获取数组和操作之后重新分配它:

$tmp = $namespc->{$a}; 
array_push($tmp, $b); 
$namespc->{$a} = $tmp; 

我建议阅读Zend_Session - Working with Arrays,并按照他们的榜样。

更新:

当您使用PHP 5.2,你可能需要做的,因为我提出的。在本文档中,它说:

由于PHP魔术方法实现的历史,修改在命名空间里的数组是不是5.2.1之前下的PHP版本。

+0

PHP 5.2版 – user358643 2010-06-05 10:23:48

+0

@ kate-koopy:那么这可能是问题所在。 – 2010-06-05 10:43:21

+0

@Fekix Kling我只看我的确切版本是5.2.6,至于http://framework.zend.com/issues/browse/ZF-800错误不应该发生。但它确实:( – user358643 2010-06-05 11:13:42