2012-01-23 36 views
0

在PHP語句,我有if語句:

FIX_RECIPE_ID && FIX_RECIPE_ID != $favouriteRecipeId

它做什麼它在錫說,雖然,有沒有更符合邏輯的寫這種說法的方法?

非常感謝!

+0

這條語句將產生一個警告。這不是JavaScript :) –

+2

'FIX_RECIPE_ID'常量?如果是這樣,你應該檢查'defined('FIX_RECIPE_ID')'。 –

+0

@Jan,沒有人說過它是JS,它的PHP! –

回答

2

如果FIX_RECIPE_ID是一個常量,請使用此語法。

defined(FIX_RECIPE_ID) && (FIX_RECIPE_ID != $favouriteRecipeId) 

如果不是,使它成爲一個變量,然後再使用

isset($FIX_RECIPE_ID) && ($FIX_RECIPE_ID != $favouriteRecipeId) 
2

對不起提交作爲一個答案,但我沒有評論權限,但我猜。

Shiplu的答案並不完全正確。行:

defined(FIX_RECIPE_ID) && (FIX_RECIPE_ID != $favouriteRecipeId) 

會出現工作,但會拋出一個通知,沿Use of undefined constant FIX_RECIPE_ID - assumed 'FIX_RECIPE_ID'行,如果它沒有定義,並且會有非常意外的行爲(通常返回false),如果它是。

defined函數將該常量的名稱作爲字符串。如果PHP沒有定義並且按照預期的那樣工作,PHP會假設你的意思是字符串'FIX_RECIPE_ID'(儘管如前所述,拋出通知)。如果已定義,則將檢查以FIX_RECIPE_ID的命名的常量是否存在。

它沒有定義的時候意思是,你的支票是有效的:

defined('FIX_RECIPE_ID') && (FIX_RECIPE_ID != $favouriteRecipeId) 

哪個是正確的,將返回false。當定義,但是,(讓我們假裝這是10),檢查將成爲:

defined(10) && (FIX_RECIPE_ID != $favouriteRecipeId) 

並確定將返回false。 這整個條件將始終返回false。

在這種情況下使用defined正確的方法是:如果沒有定義FIX_RECIPE_ID

defined('FIX_RECIPE_ID') && (FIX_RECIPE_ID != $favouriteRecipeId) 
相關問題