Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从cookie数组中删除值_Php_Arrays_Cookies - Fatal编程技术网

Php 从cookie数组中删除值

Php 从cookie数组中删除值,php,arrays,cookies,Php,Arrays,Cookies,我正在尝试从cookie数组中删除一个值:- if (!empty($_GET['job_unfav'])) { $value_to_delete = $_GET['job_fav']; // Cookie value to delete from array $favouriteIDs = explode('|', $_COOKIE['job_fav']); var_dump($favouriteIDs); unset($

我正在尝试从cookie数组中删除一个值:-

  if (!empty($_GET['job_unfav'])) {

        $value_to_delete = $_GET['job_fav']; // Cookie value to delete from array
        $favouriteIDs = explode('|', $_COOKIE['job_fav']);

        var_dump($favouriteIDs);
        unset($favouriteIDs[$value_to_delete]);

        $favouriteIDs = array_values($favouriteIDs);

        setcookie('job_fav', implode('|', $favouriteIDs));

    }
$favoriteId
返回:-

array(90) { 
      [0]=> string(3) "542" 
      [1]=> string(0) "" 
      [2]=> string(3) "538" 
      [3]=> string(0) "" 
      [4]=> string(3) "534" 
      [5]=> string(0) "" 
      [6]=> string(3) "524" 
      [7]=> string(0) "" 
      [8]=> string(3) "516" 
      [9]=> string(9) "undefined" 
      [10]=> string(9) "undefined" 
      [11]=> string(9) "undefined" 
      [12]=> string(3) "468" 
      [13]=> string(0) "" 
      [14]=> string(0) "" 
      [15]=> string(0) "" [16]=> string(0) "" [17]=> string(0) "" [18]=> string(0) "" [19]=> string(0) "" [20]=> string(0) "" [21]=> string(0) "" [22]=> string(3) "468" [23]=> string(0) "" [24]=> string(3) "235" [25]=> string(3) "231" [26]=> string(0) "" [27]=> string(0) "" [28]=> string(0) "" [29]=> string(3) "235" [30]=> string(3) "231" [31]=> string(3) "228" [32]=> string(0) "" [33]=> string(0) "" [34]=> string(0) "" [35]=> string(0) "" [36]=> string(3) "235" [37]=> string(3) "231" [38]=> string(0) "" [39]=> string(0) "" [40]=> string(0) "" [41]=> string(3) "231" [42]=> string(3) "228" [43]=> string(3) "225" [44]=> string(0) "" [45]=> string(0) "" [46]=> string(0) "" [47]=> string(0) "" [48]=> string(3) "235" [49]=> string(0) "" [50]=> string(0) "" [51]=> string(0) "" [52]=> string(0) "" [53]=> string(0) "" [54]=> string(0) "" [55]=> string(3) "235" [56]=> string(3) "235" [57]=> string(0) "" [58]=> string(3) "235" [59]=> string(0) "" [60]=> string(0) "" [61]=> string(3) "235" [62]=> string(0) "" [63]=> string(0) "" [64]=> string(0) "" [65]=> string(9) "undefined" [66]=> string(0) "" [67]=> string(9) "undefined" [68]=> string(0) "" [69]=> string(3) "502" [70]=> string(0) "" [71]=> string(0) "" [72]=> string(0) "" [73]=> string(0) "" [74]=> string(0) "" [75]=> string(0) "" [76]=> string(0) "" [77]=> string(0) "" [78]=> string(0) "" [79]=> string(0) "" [80]=> string(0) "" [81]=> string(0) "" [82]=> string(0) "" [83]=> string(0) "" [84]=> string(0) "" [85]=> string(0) "" [86]=> string(0) "" [87]=> string(0) "" [88]=> string(0) "" [89]=> string(3) "514" }
目前这并没有移除任何东西,你知道怎么做吗


i、 e.我想从
job\u fav
cookie中删除所有出现的'542',但保留所有其他值

这里有一个使用
array\u search()函数的简单方法

<?php
$favoriteIds = array("542", "","538", "", "534", "", "524" );

$value_to_delete = '542';    //$_GET['job_fav']

$idx = array_search($value_to_delete, $favoriteIds);

if ( $idx !== FALSE ) {
    //if the value was found
    unset($favoriteIds[$idx]);
}

print_r($favoriteIds);

在代码中,您可以正确地从数组中删除所需的值

但是,, 为了覆盖您已经拥有的cookie(因此您删除的值实际上通过交换cookie被删除),您需要向setcookie php函数调用添加更多参数:

从:

bool setcookie(string$name[,string$value[,int$expire=0[,string$path[,string$domain[,bool$secure=false[,bool$httponly=false]]]

确保参数:

路径

与您已有的cookie相同,否则您将只创建另一个cookie,否则setcookie将被忽略

然后,必须使用当前时间戳设置expire字段(如果cookie未过期,则该字段可以保留为0),您可以使用函数加上希望cookie处于活动状态的秒数:

$expire=time()+秒数


我希望这能有所帮助。

您想删除所有发生在
542
中的事件还是只删除一个?最好是@riggsfully(1)您正在测试
$\u GET['job\u unav']
并使用
$\u GET['job\u fav']
;(2) 执行php的方法是取消设置元素,542是键,而不是值。您应该使用
unset($favoriteId[array\u search($value\u to\u delete,$favoriteId)]
Array
(
    [1] =>
    [2] => 538
    [3] =>
    [4] => 534
    [5] =>
    [6] => 524
)