Php 如何从cookie数组中的数组中删除值?
我使用的是CakePHP3.0。我对cookie的概念很陌生。我已成功创建cookie,但我想从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');
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中的数据也是如此。