переменная сеанса продолжает переопределяться в php

#php #arrays #codeigniter #session

#php #массивы #codeigniter #сессия

Вопрос:

В моем php-коде я пытаюсь собирать некоторые данные каждый раз, когда пользователь нажимает определенную кнопку. Однако, несмотря на то, что данные доступны при каждом нажатии кнопки, в массив добавляются только самые последние данные. Как я могу продолжать добавлять эти новые данные, сохраняя старые данные

 $session_data['items'] = array('id' => $id,'price' => $price);
$this->session->set_userdata($session_data); 
  

Редактировать

Обновленный код с предложенным ответом, однако до сих пор нет результата

 $session_data['items'][]= array('id' => $id,'price' => $price);
$this->session->set_userdata($session_data); 
  

Комментарии:

1. Вам нужен 2-мерный массив, и вы можете поместить в него новый вложенный массив.

Ответ №1:

Вы можете использовать тип данных 2-мерного массива. Таким образом, вы можете вставить много данных и получить последнее значение.

 $session_data['items'][] = array('id' => $id, 'price' => $price);
$session_data['items'][] = array('id' => $id, 'price' => $price   1);
  

Если вы продолжаете добавлять ее вышеуказанным способом, она помещает новые данные в конец. В приведенном выше коде сохраняются оба значения.

Ответ №2:

Используйте push() метод CodeIgnighter для добавления к переменной сеанса, которая содержит массив.

 $this->session->push('items', array('id' => $id, 'price' => $price));
  

Комментарии:

1. Я обновил вопрос о том, как теперь выглядит мой код

2. Убедитесь, что остальная часть скрипта использует переменную сеанса в соответствии с этим.

3. В настоящее время я просто тестирую его, и я устанавливаю его, используя код в вопросе, и тестирую его с другого контроллера, используя echo «<pre>»; print_r($this->session-> addedItems); echo «</pre>»;

4. Что такое addedItems и как это связано items ?

5. Что такое $this->session ? Используете ли вы фреймворк, который определяет эти классы?