簡體   English   中英

PHP會話問題從購物車Sessin數組中刪除值

[英]php session issue in remove value from Cart Sessin Array

我正在使用Yii Framework,無法從會話中刪除值。 當我使用ajax調用函數時,在控制台中出現此錯誤

間接修改CHttpSession的重載元素無效

任何建議都會對您有所幫助,謝謝。 下面是我的代碼

public function actiondeleteproductajax() {
    $session = Yii::app()->session;
    $id = isset($_POST['id']) ? $_POST['id'] : "";
    $key = array_search($id, $session['cart_items']);
    if ($key !== false) {
        unset($session['cart_items'][$key]);
        echo 'success';
    }
}

我想刪除數組的索引,因為值包含多次添加的相似ID的產品

嘗試這個:

$cartItems = Yii::app()->session['cart_items'];
$id = isset($_POST['id']) ? $_POST['id'] : "";
$key = array_search($id, $cartItems);
if ($key !== false) {
    unset($cartItems[$key]);
    echo 'success';
}
Yii::app()->session['cart_items'] = $cartItems;

您不能直接修改session項,它由yii在內部使用getter和setter進行處理,因此unset()將無效,因此發出警告。 但是,您可以在副本$cartItems取消設置項目,並將剩余的數組分配回session object

發生的是所討論的類正在使用重載為您提供價值

$session = Yii::app()->session;

如果您查看類本身,則應該有一個__get函數,並且$session可能是privateprotected 當您訪問$session變量時,它將返回一個copy 這就是為什么它告訴您未unset沒有任何效果的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM