在PHP中,有什么区别:
if($might_not_be_set) doStuff();
和
if(!empty($might_not_be_set)) doStuff();
前一种方法使用未定义的变量通知使Apache日志混乱,但我没有看到不使用它的原因 - 它有什么不同的做法?
PS。我不想使用isset()
- 作为布尔值的评估正是我想要的。
答案 0 :(得分:2)
empty()将评估零长度字符串或NULL为TRUE,而任何更长的字符串(或整数或布尔值)将为FALSE。因此,你的!empty()只会确保那里有某些值,而不一定是你想要的值。
例如,对字符串 1,false和true的空()检查都计算为FALSE,而字符串为0将评估为TRUE。
我建议无论你使用什么,对于下一个你应该/不期待的人,你都应该明确地表达出来......即使那只是你从现在开始的六个月。
答案 1 :(得分:1)
empty()
确定变量是否为空。如果变量不存在或者其值等于FALSE,则该变量被视为空。如果变量不存在, empty()不会生成警告。
答案 2 :(得分:1)
你自己说过:第一种方法使日志混乱,并发出有关未声明变量的警告。这两种方法在功能上都是等价的,但是从来没有明显的伤害。我会选择!empty(),因为它既明确又避免了混乱。