2

编写这样的 PHP 条件有什么好处:

if ($variable != NULL) {

相对

if (!empty($variable)) {

相对

if ($variable) {

他们不都是一样的吗?如果您只是想判断变量是否存在,似乎最后一个总是最简单的。感谢您帮助我了解这里的区别。我错过了 PHP 101 的第一天。

4

4 回答 4

6

查看此表以了解 PHP 比较运算符。false、0、""、NULL 和未定义的变量之间存在许多细微差别。

于 2009-01-05T18:12:38.660 回答
2

我同意肖恩的观点,但我会用简单的英语概述每个人的作用:

if ($variable != NULL) {

$variableNULL如果尚未设置,将是。这实际上与isset未定义的变量相同且相同。

if (!empty($variable)) {

通常,这会检查$variable字符串 ( (string) $variable) 的 a是否为strlen0。但是true会使其返回false,非 0 的整数和空数组也是如此。出于某种原因(我认为这是错误的)$variable = '0';将返回true.

if ($variable) {

这种真/假检查的作用类似于(boolean) $variable- 基本上变量在转换为布尔值时是否返回真。

考虑它的一种方法是它的行为与空相同,只是返回相反的值。

有关我所说的(boolean) $variable(类型转换/杂耍)的更多信息,请参阅本手册页

(PHP开发人员:这主要是凭记忆,如果我在这里错了,请纠正我!)

于 2009-01-05T18:29:50.077 回答
2

在严格错误模式 (E_STRICT) 下运行时,子句

if ($variable) {}

if ($variable != null) {}

当这些变量未初始化时,会抛出通知。

Notice: Undefined variable: variable

这些通知是代码缺陷的指标,因为使用未初始化是一个可能的安全漏洞。(关键字:register_globals)。

我最喜欢检查变量是否存在的是

if (isset($variable)) {}

这将检查该变量是否曾被使用过(读取:使用值初始化!= null)。

于 2009-01-05T21:39:07.167 回答
1

相关问题:PHP 中的弱类型化:为什么要使用 isset?

基本上,它们在处理空值、空值、零和布尔值时是不一样的。

于 2009-01-05T18:34:09.473 回答