2010-05-25 34 views
6

我是新手,使用webapps和PHP。

我想要得到它尚未创建的cookie,我的意思是,当我尝试加载寻找不存在的cookie的页面时,我得到一个错误,我试图摆脱这与一个尝试/赶上但不成功。这此代码我想:

try{ 

    $cookie = $_COOKIE['cookiefoo']; 

    if($cookie){ 

      //many stuffs here 
    } 
    else 
     throw new Exception("there is not a cookie"); 
} 
catch(Exception $e){ 

} 

我怎样才能做到这一点,任何想法,我们将不胜感激它。

回答

7

使用isset,以防止发生的任何警告或通知,如果该键是不存在的:

if(isset($_COOKIE['cookiefoo']) && !empty($_COOKIE['cookiefoo'])) { 
    // exists, has a value 
    $cookie = $_COOKIE['cookiefoo']; 
} 

这也可以用array_key_exists做,但我认为isset更简洁:

if(array_key_exists('cookiefoo', $_COOKIE) && !empty($_COOKIE['cookiefoo'])) { 
    // exists, has a value 
    $cookie = $_COOKIE['cookiefoo']; 
} 
+1

如果您寻找非空值,条件如: if(!empty($ _ COOKIE ['cookiefoo']))就足够了,不需要isset。 – 2010-05-25 14:54:57

+2

无论哪种方式,isset或empty都是真的。对于isset,我总是使用isset() – MacMac 2010-05-25 17:13:50

+2

+1,对于像整数0,空数组和空字符串这样的值,empty将返回false。 Isset只会对null和未设置的变量返回false。 – Daniel 2010-05-26 04:48:50