array_key_exists抛出错误:第二个参数应该是数组或对象

时间:2015-01-16 03:27:38

标签: php arrays session cookies array-key-exists

我检查了所有29个以前用array_key_exists标记的帖子,但我找不到一个可以处理我的问题的特定问题。我们的服务器最近已经更新,我们已经升级到PHP 5.2.17(是的,我知道它仍然落后,但我们正在修复问题,因为我们继续前进,5.3导致了一次处理的问题很多,更不用说5.4)。

我们的网页正在抛出与array_key_exists绑定的错误消息:

  

[ERROR] [2] [array_key_exists()[function.array-key-exists]:第二个   参数应该是数组或对象]

else if(array_key_exists("ACCOUNT", $_SESSION) && $_SESSION["ACCOUNT"] == $target){
    // do nothing, we are a-ok
}

在上面的代码中(我认为)我们正在检查是否已为当前帐户设置并存在会话。如果是这样我们什么都不做否则,我们会在此之后的其他语句中设置会话。

$_SESSION["ACCOUNT"]正在Cookie中设置。价值"帐户"是子域,也用于标识数据库中的帐户。以下是Cookie中显示帐户设置的行。该帐户确实存在。

SESSION[ACCOUNTID] = 39
SESSION[ACCOUNT] = demo
SESSION[PAIDACCOUNT] = 0

我的问题是,现在应该如何对这行php进行编码,以免引发该错误?

谢谢!

1 个答案:

答案 0 :(得分:1)

您应该使用isset代替

else if(isset($_SESSION["ACCOUNT"]) && $_SESSION["ACCOUNT"] == $target){
    // do nothing, we are a-ok
}