在 PHP 中,有什么区别:
if($might_not_be_set) doStuff();
和:
if(!empty($might_not_be_set)) doStuff();
前一种方法用未定义的变量通知使 Apache 日志混乱,但我看不出不使用它的原因 - 它有什么不同?
PS。我不想使用isset()
- 评估为布尔值正是我想要的。
empty() 将评估零长度字符串或 NULL 为 TRUE,而任何更长的字符串(或整数或布尔值)将为 FALSE。因此,你的 !empty() 只会确保那里有一些价值,不一定是你想要的。
例如,对字符串1、false 和 true 的 empty() 检查都评估为 FALSE,而字符串0 的评估结果为 TRUE。
我建议无论你使用什么,你都应该痛苦地向下一个人明确说明你的期望/不期望..即使那只是六个月后的你。
这是一个详细的比较: http: //php.net/manual/en/types.comparisons.php
您自己说过:第一种方法使日志杂乱无章,并带有有关未声明变量的警告。这两种方法在功能上是等效的,但明确一点也没有什么坏处。我会选择 !empty() 因为它既明确又避免混乱。
empty()
确定一个变量是否被认为是空的。如果变量不存在或其值等于 FALSE,则认为该变量为空。如果变量不存在,empty() 不会生成警告。