Как увеличить значение массива сессии? - PullRequest
0 голосов
/ 23 октября 2019

Я использую это в корзине для покупок

if (!empty($_getvars['id'])) {
    $data = $session->get('cart');
    $data[] = $_getvars['id'];
    $session->set('cart', $data);
} 

$_getvars['id'] производится, и при каждом щелчке новый элемент массива добавляется в сеанс. Он работает нормально, как и сейчас, но если продукт выбирается более одного раза, будет добавлен новый массив, как можно изменить его так, чтобы productid получал смещение массива, и значение будет увеличиваться с 1 каждый раз, чтобы отражать количество?

$i = 1;
if (!empty($_getvars['id'])) {
    $data = $session->get('cart');
    $data[$_getvars['id']] = $i++;
    $session->set('cart', $data);
} 

но этот код каждый раз сбрасывается до 1. Как это исправить? Или какая-нибудь лучшая структура массива для корзины покупок?

1 Ответ

1 голос
/ 23 октября 2019

Если он не установлен, установите его на ноль, затем всегда добавляйте его.

if (!empty($_getvars['id'])) {
    $data = $session->get('cart');
    if(!isset($data[$_getvars['id']]){
        $data[$_getvars['id']] = 0;
    }
    $data[$_getvars['id']] += 1;
    $session->set('cart', $data);
} 

Или вы можете добавить динамическое количество

if (!empty($_getvars['id'])) {
    $data = $session->get('cart');
    if(!isset($data[$_getvars['id']]){
        $data[$_getvars['id']] = 0;
    }
    // $_GET['qty'] OR 1, if not set
    $qty = (!empty($_getvars['qty']))? $_getvars['qty']: 1;
    $data[$_getvars['id']] += $qty;
    $session->set('cart', $data);
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...