Добрый день. Осваиваю работу сессий. Очень надеюсь на вашу помощь через PHP: print_r($_SESSION); вывожу массив с содержимым: Код (Text): Array ( [user_id] => 1 [ITEMS] => Array ( [232] => Array ( [TITLE] => Темв [QUO] => 2 [PRICE] => 100 [CATEGORY] => Темы ) [230] => Array ( [TITLE] => Формы [QUO] => 1 [PRICE] => 500 [CATEGORY] => Красивости ) [233] => Array ( [TITLE] => Модуль [QUO] => 1 [PRICE] => 900 [CATEGORY] => Модули ) ) ) Объясните, как работать с массивом. Прогуглил, но вразумительного не нашел. В частности нужно прогнать массив через foreach и увеличить QUO до 2 у пункта Модуль, а PRICE соответственно умножить на 2. Спасибо большое
Зачем для этого прогонять? PHP: $_SESSION['ITEMS'][233]['QUO'] = 2; $_SESSION['ITEMS'][233]['PRICE'] = $_SESSION['ITEMS'][233]['PRICE']*2;
PHP: $num = 233; foreach ($_SESSION['ITEMS'] as $k => $v) { if ($k == $num) { $_SESSION['ITEMS'][$k]['PRICE'] = $v['PRICE']*2; $_SESSION['ITEMS'][$k]['QUO'] = 2; } }
Смотрю, что сессия реально посчиталась, а вот при обновлении страницы, старые значения.. --- Добавлено --- Я имею в виду, что в сессии старые значения. И еще: от первого варианта в самом конце осталось следующее: Код (Text): [ITEMS] => Array ( [233] => Array ( [QUO] => 2 [PRICE] => 0 ) ) Может в этом причина, почему не сохраняются в сессии пересчитанные значения?
Нет не все. В сессии я через print_r($_SESSION); вижу следующее: Код (Text): Array ( [user_id] => 1 [ITEMS] => Array ( [232] => Array ( [TITLE] => Темв [QUO] => 2 [PRICE] => 100 [CATEGORY] => Темы ) [230] => Array ( [TITLE] => Формы [QUO] => 1 [PRICE] => 500 [CATEGORY] => Красивости ) [233] => Array ( [TITLE] => Модуль [QUO] => 2 // изменилось на 2 [PRICE] => 900 // изменилось на 1800 [CATEGORY] => Модули ) ) От старого варианта оставалось, но это я уже убрал: [LIST=1] [*][ITEMS] => Array [*] ( [*] [233] => Array [*] ( [*] [QUO] => 2 [*] [PRICE] => 0 [*] ) [*] [*] ) [/LIST] ) --- Добавлено --- Но при обновлении страницы, сессия выводится со старыми значениями
PHP: <?php session_start(); $_SESSION['user_id'] = 1; $_SESSION['ITEMS'] = [ '232' => [ 'TITLE' => 'Темв', 'QUO' => 2, 'PRICE' => 100, 'CATEGORY' => 'Темы' ], '230' => [ 'TITLE' => 'Формы', 'QUO' => 1, 'PRICE' => 500, 'CATEGORY' => 'Красивости' ], '233' => [ 'TITLE' => 'Модуль', 'QUO' => 1, 'PRICE' => 900, 'CATEGORY' => 'Модули' ] ]; echo '<pre>'; print_r($_SESSION); echo '</pre>'; foreach ($_SESSION['ITEMS'] as $k => $v) { if($_SESSION['ITEMS'][$k]['TITLE'] == 'Модуль') { $_SESSION['ITEMS'][$k]['QUO'] = 2; $_SESSION['ITEMS'][$k]['PRICE'] = $_SESSION['ITEMS'][$k]['PRICE'] * 2; } } echo '<pre>'; print_r($_SESSION); echo '</pre>'; ?>
Ясно... Спасибо... буду искать дальше --- Добавлено --- Обнаружил вот такую конструкцию: PHP: $this->cart = Order::create(); Не знаю, это синтаксис php или самопис? При закомментировании, сессия обновляется, но в этом случае она увеличивает значения не в 2 а 4 раза. Это значит, что дважды выполняется пересчет значений массива сессии?