Carro de compras de PHP Sessions: actualice el producto si ya está identificando la sesión

He tenido problemas para encontrar una solución a un carrito de compras simple con$_SESSION. Lo mantuve muy simple y este es mi código en este momento

if ( Input::isPost('add') ) {

    $id = Input::get('id');
    $qta = Input::post('qta');
    $size = Input::post('size');

    if ( !isset($_SESSION['cart']) ) {
        $_SESSION['cart'] = array();
    }

    if ( array_key_exists($id, $_SESSION['cart']) ) {
        if ( $_SESSION['cart'][$id][0] == $size ) {
            $_SESSION['cart'][$id][1]+=$qta;
        } else {
            $_SESSION['cart'][$id] = array( $size, $qta );
        }
    } else {
        $_SESSION['cart'][$id] = array( $size, $qta );
    }

}

Entonces, ¿qué hace este código?

1) Si el$_SESSION['cart'] no existe, créelo, de lo contrario agregue el nuevo elemento. 2) Cuando agrega al carrito un artículo, debe elegir un tamaño y una cantidad para ese artículo. 3) Si ese artículo ya existe en la matriz del carrito, verifique si el tamaño es el mismo, si es así, simplemente actualice la cantidad. Aquí está el problema, si el artículo ya existe (verifica la$_SESSION['cart'][$id]) PERO el tamaño es diferente, no actualice el actual, sino que cree un nuevo elemento. El problema es que el actual se está reemplazando en lugar de agregar uno, por lo que en lugar de 2 productos con el mismoid pero diferentesize, Solo tengo el más reciente.

Si pudieras ayudarme a resolverlo, te lo agradeceré.

Gracias de antemano.

Respuestas a la pregunta(4)

Su respuesta a la pregunta