Я использую этот код для Virtuemart:
$product_id_to_remove = 3;
$cart = json_decode($_SESSION['__vm']['vmcart']);
foreach($cart->cartProductsData as $k => $v){
if($v->virtuemart_product_id == $product_id_to_remove) unset($cart->cartProductsData[$k]);
}
$_SESSION['__vm']['vmcart'] = json_encode($cart);
но я получаю фатальную ошибку: не могу использовать объект типа stdClass как массив в строке... 4. Если я добавлю true в json_decode ($ _ SESSION ['__ vm'] ['vmcart']), я получаю предупреждение: недопустимый аргумент foreach().
Как решить проблему?
ps Я новичок в php и вообще не знаю json_. Код предлагается по ссылке: qaru.site/questions/9749002/...
$cart->cartProductsData
ведет себя как массив, но на самом деле объект
попробуйте это: измените
unset($cart->cartProductsData[$k])
в
unset($cart->cartProductsData->$k)
true
для второго параметра, вам нужно обратиться к$cart['cartProductsData']
как он возвращает ассоциативный массив, а не класс.foreach(get_object_vars($cart->cartProductsData) as $k => $v)