在PHP中,我有if语句:
FIX_RECIPE_ID && FIX_RECIPE_ID != $favouriteRecipeId
不过,它照罐头上说的做,有没有更合乎逻辑的方式来写这句话?
提前感谢大家!
如果FIX_RECIPE_ID
是常量,请使用此语法。
defined(FIX_RECIPE_ID) && (FIX_RECIPE_ID != $favouriteRecipeId)
如果不是,请先将其设为变量,然后使用
isset($FIX_RECIPE_ID) && ($FIX_RECIPE_ID != $favouriteRecipeId)
很抱歉作为回答提交,但我想我还没有评论权限。
希普鲁的回答并不完全正确。线路:
defined(FIX_RECIPE_ID) && (FIX_RECIPE_ID != $favouriteRecipeId)
看起来会起作用,但如果没有定义,则会发出类似Use of undefined constant FIX_RECIPE_ID - assumed 'FIX_RECIPE_ID'
的通知,如果定义了,则会出现非常意外的行为(通常返回false)。
defined
函数将常量的名称作为字符串。如果没有定义字符串'FIX_RECIPE_ID'
,PHP将假设它是指它,并且它按预期工作(尽管如前所述,抛出了一个通知)。如果定义了它,您将检查是否存在以FIX_RECIPE_ID的值命名的常量。
这意味着当它没有定义时,你的检查是有效的:
defined('FIX_RECIPE_ID') && (FIX_RECIPE_ID != $favouriteRecipeId)
这是正确的,将返回false。然而,当被定义为时(假设它是10
),检查将变为:
defined(10) && (FIX_RECIPE_ID != $favouriteRecipeId)
并且defined将返回false整个条件将始终返回false
在此上下文中定义的正确使用方式是:
defined('FIX_RECIPE_ID') && (FIX_RECIPE_ID != $favouriteRecipeId)