Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.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 从阵列帮助中删除_Php_Html_Cookies - Fatal编程技术网

Php 从阵列帮助中删除

Php 从阵列帮助中删除,php,html,cookies,Php,Html,Cookies,我有一个cookie,它以数组形式存储信息 这是针对分类广告网站的,每当用户删除他们的“广告”时,cookie也必须从被删除的广告中删除 所以我有这个: if (isset($_COOKIE['watched_ads'])){ $expir = time()+1728000; $ad_arr = unserialize($_COOKIE['watched_ads']); foreach($ad_arr as $val){ if($val==

我有一个cookie,它以数组形式存储信息

这是针对分类广告网站的,每当用户删除他们的“广告”时,cookie也必须从被删除的广告中删除

所以我有这个:

if (isset($_COOKIE['watched_ads'])){
$expir = time()+1728000;
        $ad_arr = unserialize($_COOKIE['watched_ads']);
        foreach($ad_arr as $val){
            if($val==$id){  // $id is something like "bmw_m3_10141912"
                unset($val);
                            setcookie('watched_ads', serialize($ad_arr), $expir, '/');
            }
        }
        }
这不管用。。。知道为什么吗?我认为这是一个问题与未解决的部分。。。 另外,请记住,如果数组中只有一个值,那么会发生什么

谢谢

似乎很合适:

$array = array_filter($array, create_function('$v', 'return $v != '.$id.';'));
似乎合适:

$array = array_filter($array, create_function('$v', 'return $v != '.$id.';'));
这里有两个错误:1)取消设置
$val
而不是数组元素本身。2) 将循环中的cookie设置为未知的
$ad_arr2
数组

    foreach($ad_arr as $key => $val){
        if($val==$id){  // $id is something like "bmw_m3_10141912"
            unset($ad_arr[$key]);
        }
    }
    setcookie('watched_ads', serialize($ad_arr), $expir, '/');
这里有两个错误:1)取消设置
$val
而不是数组元素本身。2) 将循环中的cookie设置为未知的
$ad_arr2
数组

    foreach($ad_arr as $key => $val){
        if($val==$id){  // $id is something like "bmw_m3_10141912"
            unset($ad_arr[$key]);
        }
    }
    setcookie('watched_ads', serialize($ad_arr), $expir, '/');

您正确无误地使用了unset:

如果静态变量在内部未设置() 对于函数,unset()将销毁 变量仅在 函数的其余部分。接电话 将恢复以前的值 变数

。您要引用原始数组:

foreach ($ad_arr as $key => $val)
...
            unset($ad_arr[$key]);
...

您正确无误地使用了unset:

如果静态变量在内部未设置() 对于函数,unset()将销毁 变量仅在 函数的其余部分。接电话 将恢复以前的值 变数

。您要引用原始数组:

foreach ($ad_arr as $key => $val)
...
            unset($ad_arr[$key]);
...

或者,从PHP5开始,使用引用的值
foreach($arr as&$value)
@dnagirl如果您取消设置($value),则会中断引用,但不会从数组中删除元素。您仍然需要在unset.oops中引用数组!对。我在想重置有多方便(不再是
array_walk()
!),但忘记了OP是关于取消设置的
或者,从PHP5开始,使用引用值
foreach($arr as&$value)
@dnagirl如果取消设置($value),则会中断引用,但不会从数组中删除元素。您仍然需要在unset.oops中引用数组!对。我在想重置有多方便(不再是
array_walk()
!),但忘记了OP是关于取消设置的<代码>