Удалить из справки массива - PullRequest
1 голос
/ 27 апреля 2010

У меня есть 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, '/');
            }
        }
        }

Это не работает ... есть идеи, почему? Я думаю, что это проблема с неустановленной частью ... Кроме того, имейте в виду, что если в массиве только одно значение, что произойдет?

Спасибо

Ответы [ 3 ]

1 голос
/ 27 апреля 2010

У вас есть две ошибки: 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, '/');
0 голосов
/ 27 апреля 2010

Вы правы, что используете unset неправильно. Мануал по неустановленным состояниям :

Если статическая переменная не установлена ​​() внутри функции unset () уничтожает переменная только в контексте остальные функции. Следующие звонки восстановит предыдущее значение переменная.

Когда вы используете «как», вы присваиваете значение этого элемента массива временной переменной . Вы хотите сослаться на исходный массив:

foreach ($ad_arr as $key => $val)
...
            unset($ad_arr[$key]);
...
0 голосов
/ 27 апреля 2010

array_filter представляется целесообразным:

$array = array_filter($array, create_function('$v', 'return $v != '.$id.';'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...