2014-12-30 2 views
0
$data=array(); 
$data[]= array('product_id'=>$this->input->post('product_id'), 
       'quantity'=>$this->input->post('quantity'), 
       'unit'=>$this->input->post('unit'), 
       'unit_rate'=>$this->input->post('unit_rate')); 

        $this->session->set_userdata('data',$data); 
       $post_array['cart'][]=$this->session->userdata('data'); 

Я хочу добавить $ data в $ post_array. Как это сделать с помощью codeigniter?Добавление ассоциативного массива в другой массив

Я использую этот код для создания корзины покупок, где я хочу хранить каждый продукт, добавленный клиентом на сеанс. И хотите отобразить весь продукт, добавленный пользователем в отдельной таблице.

+1

Просто просто попытка присвоить его: '$ post_array [ 'Корзина'] [] = $ data' – vaso123

+0

и затем ?? Как мне получить доступ к нему с помощью цикла foreach? –

+0

это будет сложно на каждом шагу. мое предложение - сделать таблицу базы данных для тележки. когда выбран первый элемент, создайте уникальный идентификатор для пользователя и сохраните его в сеансе. используйте этот уникальный идентификатор в таблице корзины. новая страница - извлечение уникального идентификатора из сеанса, используйте уникальный идентификатор, чтобы вернуть элементы в таблице корзины. – cartalot

ответ

2

Вы можете просто назначить свои данные в корзину.

$post_array['cart'][] = $data; 

Позже, если вы хотите перебрать, что вы можете использовать это:

foreach ($post_array['cart'] as $item) { 
    echo 'Id of product: ' . $item['product_id']."<br />"; 
    echo 'Quantity: ' . $item['quantity']."<br />"; 
    //and so on... 
} 

Но я предположим, вы хотите, чтобы добавить его к сессии, а не на этот пост.

EDIT

База на OP комментарий. Вы всегда переписываете переменную $ _SESSION ['data']. Так что добавьте его в новый массив:

//Set the data 
$data[] = array('product_id' => $this->input->post('product_id'), 
    'quantity' => $this->input->post('quantity'), 
    'unit' => $this->input->post('unit'), 
    'unit_rate' => $this->input->post('unit_rate')); 
//Get the cart 
$cart = $this->session->userdata('data'); 
//Add data to this temporary variable 
$cart[] = $data; 
//Set back the data 
$this->session->set_userdata('data', $cart); 

//Later, when you want to iterate through the cart: 
foreach ($this->session->userdata('data') as $item) { 
    echo 'Id of product: ' . $item['product_id'] . "<br />"; 
    echo 'Quantity: ' . $item['quantity'] . "<br />"; 
    //and so on... 
} 
+0

Вы правы, я хочу добавить его в сеанс. И сейчас я точно делаю то, что вы сказали, проблема в том, что когда пользователь добавляет другой продукт, вторая строка продукта заменяет первую строку продукта. –

+0

Проверьте мой отредактированный ответ. – vaso123

+0

Я попробовал, но он снова заменил старую строку на новую. Я покажу вам свой полный код? –

Смежные вопросы