将键添加到现有(或非)数组

时间:2011-10-07 19:15:21

标签: php arrays key

我收到了这段代码:

if( empty ($cache[$id]) ) {
    $arr[$id] = @TIMENOW;
    setcookie('id', cArr($arr, 'set'), -1, @PATH);
} else {
    $cache[$id] = @TIMENOW;
    setcookie('id', cArr($cache, 'set'), -1, @PATH);
}

它只向cookie添加一个键,如果我要转到另一个线程,它将重置数组,并且不会添加更多键。我的意思是,如果用户使用id 1进入线程,则if( empty ($cache[1]) )正在添加1,而不是更新现有值,如果用户现在转到ID为5的线程,它将做同样的事情,if( empty ($cache[5]) )为空,然后它会将ID为5的密钥添加到数组中,这样我现在就拥有两个密钥:1和5。

希望你明白了。如果你不这样做,请随意问你想要什么,我会回复你所有的问题。

1 个答案:

答案 0 :(得分:2)

了解您在cArr()中所做的工作会很有帮助。但如果没有它,这将为用户访问的每个新主题添加到您的cookie中。

//get previous values
$id = $_GET['thread_id'];
$cache = array_key_exists('id', $_COOKIE) ? unserialize($_COOKIE['id']) : array();

//add to $cache
$cache[$id] = TIMENOW;
setcookie('id', serialize(cArr($cache, 'set')), -1, PATH);

警告:但请记住,只需设置一个Cookie,就可以利用您的网络服务器。因此,最好不要使用searializeunserialize在Cookie中存储简单的静态值。