Tak się składa, że niedawno pisałem taki sklep na zaliczenie semestru. Zanim się do tego zabrałem przejrzałem kilkanaście różnych działających sklepów internetowych. Ponad 80% z nich działało na ciasteczkach. Nie wiem, dlaczego tak się dziwicie - to normalne rozwiązanie.
Sesje? Bardzo zły pomysł. Jak sesja i ktoś siedzi 2h i dodaje do kosza 23423 produktów i powiedzmy, że niechcąco zamknie przeglądarkę lub nawet system mu padnie. Wchodzi do sklepu ponownie i... znów ma pusty kosz - na 90% oleje sklep i wkurzony nic nie kupi.
Baza danych? Jeszcze gorzej. Po pierwsze duże obciążenie, które nic nie wnosi - bo nie każde dodanie do koszyka kończy się kupnem towaru. Po drugie to wymusza logowanie do sklepu zanim będzie możliwość dodania czegoś do koszyka.
Tak więc cookies to jedyne sensowne rozwiązanie.
A co do pytania o kasowanie elementu z tablicy. Nie znam na tyle PHP, ale jak pisałem to w ASP to również nie było możliwości kasowania wartości podklucza (w ASP nie ma tablic). Jedyna możliwość to chwilowe zapamiętanie wszystkich podkluczy danego ciacha, skasowanie ciacha i ponowne jego zapisanie bez tego 1 podklucza. Jednak to może wymagać dwukrotnego odświeżenia strony co nie jest podejściem profesjonalnym.
Ja to obszedłem i jeśli chciałem skasować podklucz to przypisywałem mu wartość zero. Później przy listowaniu wartości podkluczy danego ciacha jeśli okazywało się, że wszystkie są równe zeru, to kasowałem całe ciacho.