PHP中布尔评估和!空的区别

时间:2012-12-29 06:52:12

标签: php boolean

在PHP中,有什么区别:

if($might_not_be_set) doStuff();

if(!empty($might_not_be_set)) doStuff();


前一种方法使用未定义的变量通知使Apache日志混乱,但我没有看到不使用它的原因 - 它有什么不同的做法?

PS。我不想使用isset() - 作为布尔值的评估正是我想要的。

3 个答案:

答案 0 :(得分:2)

empty()将评估零长度字符串或NULL为TRUE,而任何更长的字符串(或整数或布尔值)将为FALSE。因此,你的!empty()只会确保那里有某些值,而不一定是你想要的值。

例如,对字符串 1,false和true的空()检查都计算为FALSE,而字符串为0将评估为TRUE。

我建议无论你使用什么,对于下一个你应该/不期待的人,你都应该明确地表达出来......即使那只是你从现在开始的六个月。

这是一个详细的比较: http://php.net/manual/en/types.comparisons.php

答案 1 :(得分:1)

empty()确定变量是否为空。如果变量不存在或者其值等于FALSE,则该变量被视为空。如果变量不存在, empty()不会生成警告

http://php.net/manual/en/function.empty.php

答案 2 :(得分:1)

你自己说过:第一种方法使日志混乱,并发出有关未声明变量的警告。这两种方法在功能上都是等价的,但是从来没有明显的伤害。我会选择!empty(),因为它既明确又避免了混乱。