Non è che per caso

unset($SESSION['shop'][$id]);

si scrive

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

(si noti underscore)