2010-05-25 31 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