Обновление значений в многомерном массиве корзины - PullRequest
0 голосов
/ 30 июня 2018

Я пишу заказную корзину покупок на PHP, добавляю информацию о продукте в сессию корзины следующим образом:

$product_array=array($title,$price,$qty);
if(!isset($_SESSION['cart']))
$_SESSION['cart']=array();

if(!in_array($product_array,$_SESSION['cart']))
$_SESSION['cart'][]=$product_array;
else
{
// update price and quantity here
}

Моя задача: я хочу обновить цену и количество ($ кол-во) товара, если он уже существует в $ _SESSION ['cart'] вместо добавления. Как то так

price = price + $price,
qty = qty + $qty

1 Ответ

0 голосов
/ 30 июня 2018

Этот пример похож на ваш пример. Вы можете добавить код из цикла foreach в другом состоянии. Я рассматриваю product_id вместо переменной $ title.

 $_SESSION['cart'][] = [ 'product_id'=> 12, 'price' => 100 , 'quantity' => 2 ];
 $_SESSION['cart'][] = [ 'product_id'=> 11, 'price' => 200, 'quantity' => 3 ];

    $product_array = ['product_id' => 11, 'price'=> 200, 'quantity' => 4 ];
    foreach( $_SESSION['cart'] as $key => $value ) {
      if( $value['product_id']  == $product_array['product_id']) {
         $_SESSION['cart'][$key]['quantity'] = $value['quantity'] + $product_array['quantity'];
           $_SESSION['cart'][$key]['price'] = $value['price'] + $product_array['price'];
        }
    }
print_r($_SESSION);

Вывод перед обновлением продукта:

Array
(
    [cart] => Array
        (
            [0] => Array
                (
                    [product_id] => 12
                    [price] => 100
                    [quantity] => 2
                )
            [1] => Array
                (
                    [product_id] => 11
                    [price] => 200
                    [quantity] => 3
                )
        )
)

Вывод после добавления нового товара в сессию.

Array
(
    [cart] => Array
        (
            [0] => Array
                (
                    [product_id] => 12
                    [price] => 100
                    [quantity] => 2
                )
            [1] => Array
                (
                    [product_id] => 11
                    [price] => 400
                    [quantity] => 7
                )
        )
)
...