阵列到阵列中的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版本。
PHP 5.2版 – user358643 2010-06-05 10:23:48
@ kate-koopy:那么这可能是问题所在。 – 2010-06-05 10:43:21
@Fekix Kling我只看我的确切版本是5.2.6,至于http://framework.zend.com/issues/browse/ZF-800错误不应该发生。但它确实:( – user358643 2010-06-05 11:13:42