Массив в Массив, выдвигающий объект Zend Session - PullRequest
1 голос
/ 05 июня 2010

У меня есть пример выталкивания массива в массив в объекте сеанса:

   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"));

1 Ответ

1 голос
/ 05 июня 2010

Какую версию PHP вы используете?

Возможно, вам нужно сначала получить массив и переназначить его после манипуляции:

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

Предлагаю прочитать Zend_Session - Работа с массивами и последовать их примеру.

Обновление:

Поскольку вы используете PHP 5.2, вам, возможно, придется сделать то, что я предложил. В документации сказано:

Из-за истории реализации магических методов PHP изменение массива в пространстве имен может не работать в версиях PHP до 5.2.1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...