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 に答える