Вы перечисляете не по индексам, а по значениям, чтобы сбросить индекс массива, вы должны сбросить его по индексу, а не по значению.
Также, если ваш индекс массива на самом деле является productID, вы можете полностью исключить цикл:
public function RemoveItem($productID)
{
if (isset($this->shopcart[$productID]))
{
unset($this->shopcart[$productID]);
}
}
Ваш пример не показывает, как вы добавляете элементы в $this->shopcart
, но этоможет или не может быть вариантом для вас в зависимости от потребностей вашего проекта.(т.е. нет, если вам нужно иметь в корзине отдельные экземпляры одного и того же продукта).