使用PHP中的数组键删除cookie

时间:2017-05-31 14:14:14

标签: php arrays codeigniter cookies

只想知道如何删除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_cart52058_option)? Cookie是使用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);      
}

1 个答案:

答案 0 :(得分:0)

所以在使用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的变量,实际上不可能仅使用类似{{的数组键来删除/取消设置cookie 1}}或unset($_COOKIES['cart']['90406_cart'])。我提出的解决方案是这样的:

$this->input->set_cookie('34705_cart')

我希望这可以帮助那些可能会像这样摔倒的人。