Dizi yardımıyla Sil

3 Cevap php

Ben bir dizi bilgi depolayan bir çerez var.

Bu ilanlar web sitesi için, ve kullanıcılar kendi reklamlarını 'sildiğiniz zaman çerez de silindi reklamın kaldırılması gerekir.

Yani bu var:

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, '/');
            }
        }
        }

This doesn't work... any idea why? I think its a problem with the unset part... Also, keep in mind if there is only one value inside the array, what will happen then?

Teşekkürler

3 Cevap

Burada iki hata var: 1) $val yerine dizi elemanının kendisi unset. 2) bilinmeyen $ad_arr2 dizi döngü içinde çerez ayarlayın.

    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, '/');

Eğer yanlış unset kullanmakta olduğunuz doğru. The manual on unset states:

If a static variable is unset() inside of a function, unset() destroys the variable only in the context of the rest of a function. Following calls will restore the previous value of a variable.

When you use 'as' you're assigning the value of that array element to a temporary variable. Sen Orijinal diziyi başvurmak istiyorum:

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