0

以下是我到目前为止所遵循的步骤:

首先,我已经为我的会话初始化了命名空间

$guest_events = new Zend_Session_Namespace('guest_events');

然后在会话中添加一个数组

$guest_events-> events = array();

然后我在数组中添加了一些事件。

看起来像:

Array
(
    [amount_0] => 1
    [event_id_0] => 69
    [event_title_0] => Sunday Collection
    [amount_1] => 11
    [event_id_1] => 78
    [event_title_1] => Test event

)

现在在我的另一个控制器中,当我尝试通过 ajax 实现编辑量功能时:

$event_id = $this-> getRequest()-> getParam('event_id');
        $edit_amount = $this-> getRequest()-> getParam('edit_amount');
        $event_title = $this-> getRequest() -> getParam('event_title');
$guest_events = new Zend_Session_Namespace('guest_events');
$event_array = $guest_events-> events;
for ($i = 0; $i < 5; $i ++)
        {
          if (array_key_exists('event_id_'.$i, $event_array))
          {     

                if ($event_array['event_id_'.$i]==$event_id && $event_array['event_title_'.$i]==$event_title)
                {   
                     // unset the amount and replace with new one 
                    unset($guest_events-> events-> amount_0);
                    $guest_events-> events-> amount_0 = $edit_amount;
                }
          }
        }

我已经尝试了一切,但会话变量保持不变..谁能告诉为什么?:(

4

2 回答 2

1

如果元素events是对象中的数组Zend_Session_Namespace,那么您应该像这样设置它:

$guest_events-> events['amount_0'] = $edit_amount;

而不是喜欢:

$guest_events-> events-> amount_0 = $edit_amount;

另外,由于您处于找到正确数值的循环中,我认为它实际上应该是:

$guest_events-> events['amount_' . $i] = $edit_amount;
于 2012-10-08T16:59:14.713 回答
0

我发现了问题..它没有进入内部if循环..即:

if ($event_array['event_id_'.$i]==$event_id && $event_array['event_title_'.$i]==$event_title)
                {   
                     // unset the amount and replace with new one 
                    unset($guest_events-> events-> amount_0);
                    $guest_events-> events-> amount_0 = $edit_amount;
                }

仍然无法弄清楚为什么会这样:/

于 2012-10-08T17:19:45.160 回答