L'ideale soluzione è combinare sessioni con una semplice classe.

Ad esempio:

Codice PHP:
class prodotto {
  function 
prodotto ($id$q) {
     
# id è l'id del prodotto
     # q è la quantità acquistata

     
$this->id = (int) $id;
     
$this->q  = (int) $q;
  }
}

// inizializza la sessione
session_start();

// Aggiungiamo un nuovo prodotto nel carrello

$_SESSION['shop'][] = new prodotto ($id_prodotto$q_prodotto);

// Se l'id del prodotto nel carrello si chiama $id_cart, proviamo la cancellazione

unset ($_SESSION['shop'][$id_cart]);

// Se vogliamo aggiornare la quantità inserita (incrementarla o decrementarla)

$_SESSION['shop'][$id_cart] = new prodotto ($id_prodotto$new_q_prodotto); 

Spero di esserti stato d'aiuto. Prova, è facile!
Occhio che nelle sessioni non puoi metterci un'infinità di dati!!!
A quel punto conviene utilizzare file di testo o meglio ancora MYSQL (et similia).