[英]Delete cookie using array key in PHP
只想知道如何在PHP上刪除Cookie。 以下是$_COOKIES
打印結果。 因此,我有一個購物車陣列,可以按照建議的方式存儲信息,在我的cart.php文件中,我有一個刪除議程或選項的按鈕。
Array
(
[cart] => Array
(
[90406_cart] => Array
(
[id_agenda] => 7
[qty_agenda] => 3
[options] => Array
(
[28962_option] => Array
(
[id_option] => 3
[qty_option] => 1
)
[52058_option] => Array
(
[id_option] => 4
[qty_option] => 1
)
[70617_option] => Array
(
[id_option] => 5
[qty_option] => 1
)
)
)
[86953_cart] => Array
(
[id_agenda] => 17
[qty_agenda] => 1
)
)
)
問題是如何從父級刪除或取消設置此cookie,直到陣列的子級(假設我要刪除鍵為90406_cart
或52058_option
議程)? Cookies是在Codeigniter上使用此腳本構建的
$id_agenda = 1;
$qty_agenda = 20;
$option = array(1,2,3);
$qty_option = array(3,3,3);
$num = rand(10000,99999).'_cart';
$this->input->set_cookie('cart['.$num.'][id_agenda]',$id_agenda, 86400);
$this->input->set_cookie('cart['.$num.'][qty_agenda]',$qty_agenda, 86400);
for($i = 0; $i<count($id_option);$i++){
$num2 = rand(10000,99999).'_option';
$this->input->set_cookie('cart['.$num.'][options]['.$num2.'][id_option]',$id_option[$i], 86400);
$this->input->set_cookie('cart['.$num.'][options]['.$num2.'][qty_option]',$qty_option[$i], 86400);
}
因此,在使用chrome瀏覽器中的Web開發工具進行了一些實驗之后,我才意識到Cookie的存儲位置如下:
cart[34705_cart][id_agenda] = 43
cart[34705_cart][qty_agenda] = 2
cart[34705_cart][options][12263_option][id_option] = 2
cart[34705_cart][options][12263_option][qty_option] = 4
這意味着它將每個數據存儲在一行中,然后PHP將其作為一個Array
類型的變量全部讀取為一個Array
,實際上僅使用unset($_COOKIES['cart']['90406_cart'])
或$this->input->set_cookie('34705_cart')
。 我提出的解決方案是這樣的:
// delete all cookies for agenda and including any options on the agenda array
$array_key = '34705_cart';
$this->input->set_cookie('cart['.$array_key.'][id_agenda]');
$this->input->set_cookie('cart['.$array_key.'][qty_agenda]');
foreach($data[$array_key]['options'] as $key => $item){
$this->input->set_cookie('cart['.$array_key.'][options]['.$key.'][id_option]');
$this->input->set_cookie('cart['.$array_key.'][options]['.$key.'][qty_option]');
}
// delete option on the agenda
$array_key = '34705_cart';
$array_key2 = '12263_option';
$data = $this->input->cookie('cart');
$this->input->set_cookie('cart['.$array_key.'][options]['.$array_key2.'][id_option]');
$this->input->set_cookie('cart['.$array_key.'][options]['.$array_key2.'][qty_option]');
if(count($data[$array_key]['options'][$array_key2]) == 1){
$this->input->set_cookie('cart['.$array_key.'][options]');
}
我希望這可以幫助可能在這種情況下翻滾的人。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.