#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
? Используете ли вы фреймворк, который определяет эти классы?