Этот пример похож на ваш пример. Вы можете добавить код из цикла 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
)
)
)