【发布时间】:2011-10-07 19:15:21
【问题描述】:
我得到了这个代码:
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。
希望你明白了。如果你不这样做,请随时询问你想要的任何东西,我会回答你所有的问题。
【问题讨论】:
-
@TIMENOW和@PATH中的错误抑制@是怎么回事?如果未定义相应的常量,您是否暗示"TIMENOW"和"PATH"是有效值? -
显示
cArr()函数,这是您的问题的一部分。 -
@mario 这不是我的问题,请再看一遍问题,我只是不想添加另一个数组键,cArr 只是用于序列化数组...跨度>
-
@BoltClock 你在说什么?添加了 Cookie - 所以
PATH已定义,即使 TIMENOW 未定义(但已定义),它也会添加一个带有$id键的空数组。 -
@Lucas:如果保证定义常量,则不需要
@s,并且如果未定义常量,则使用的默认值是其字符串名称,而不是NULL.如果您想将@用作常量的标志(例如$用于变量)...不要。