0

在 PHP 中,有什么区别:

if($might_not_be_set) doStuff();

和:

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


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

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

4

3 回答 3

2

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

例如,对字符串1、false 和 true 的 empty() 检查都评估为 FALSE,而字符串0 的评估结果为 TRUE。

我建议无论你使用什么,你都应该痛苦地向下一个人明确说明你的期望/不期望..即使那只是六个月后的你。

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

于 2012-12-29T07:02:30.777 回答
1

您自己说过:第一种方法使日志杂乱无章,并带有有关未声明变量的警告。这两种方法在功能上是等效的,但明确一点也没有什么坏处。我会选择 !empty() 因为它既明确又避免混乱。

于 2012-12-29T07:04:06.850 回答
1

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

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

于 2012-12-29T06:55:22.560 回答