Php 从阵列帮助中删除
我有一个cookie,它以数组形式存储信息 这是针对分类广告网站的,每当用户删除他们的“广告”时,cookie也必须从被删除的广告中删除 所以我有这个: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==
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是关于取消设置的<代码>