Php 如何从cookie数组中的数组中删除值?

Php 如何从cookie数组中的数组中删除值?,php,cookies,cakephp-3.0,Php,Cookies,Cakephp 3.0,我使用的是CakePHP3.0。我对cookie的概念很陌生。我已成功创建cookie,但我想从cookie数组中删除一个值。 这是我的密码:- enter code here $cookiedata= Array ( [0] => 2 [1] => 1 ) $_GET['id'] = 2; public function cartitems(){ $cookiedata = $this->Cookie->read('ProductCartdata');

我使用的是CakePHP3.0。我对cookie的概念很陌生。我已成功创建cookie,但我想从cookie数组中删除一个值。 这是我的密码:-

enter code here
$cookiedata=
Array
(
[0] => 2
[1] => 1
)

$_GET['id'] = 2;

public function cartitems(){
    $cookiedata = $this->Cookie->read('ProductCartdata'); 
    $this->loadModel('Products');
    $query = $this->Products->find('all')->where(['id IN' =>$cookiedata]);
    $products = $query->hydrate(false)->toArray();
        if(isset($_GET['id'])){
            if(($key = array_search($_GET['id'], $cookiedata)) !== false) {
                    unset($cookiedata[$key]);
            } 
    $this->redirect(['controller'=>'test','action' => 'cartitems']);    
   }
        $this->set(compact('products','cookiedata'));
}
我想要这个结果:-

enter code here
Array
(
[0]=>1
)

您可以阅读文档中的Cookie组件。如果您完全希望删除cookie中的数据,有一种删除方法:

在您的情况下,在循环后重写现有数据可能更有意义:

$this->Cookie->write('ProductCartdata', $cookiedata);

为什么我们在从数组中删除值后再次写入cookie?您想更新cookie,是吗?冗长的回答是。当您读取cookie时,您会得到数据的副本,但它在cookie中保持不变。如果您更新数据,例如通过取消设置密钥,那么您也必须更新cookie数据。否则,下次读取cookie时,您将获得旧数据。因此,根据您的说明,我们将再次写入cookieYes,我们将更新cookie数据以再次写入对cookie的更改。您可以将cookie视为一种数据库。如果希望保留更改,则必须在数据库中插入或更新。cookie中的数据也是如此。