编写这样的PHP条件有什么好处:
if ($variable != NULL) {
与
if (!empty($variable)) {
与
if ($variable) {
它们不一样吗?如果您只是试图判断变量是否存在,似乎最后一个总是最简单的。感谢您帮助我理解这里的不同之处。我错过了PHP 101的第一天。
答案 0 :(得分:6)
查看this table以获取PHP比较运算符的瘦。 false,0,“”,NULL和变量之间存在许多细微差别,这些差异是未定义的。
答案 1 :(得分:2)
我同意肖恩的观点,但我会用简单的英语概述每个人的作用:
if ($variable != NULL) {
如果尚未设置,则 $variable
将为NULL
。这实际上与isset
相同,与未定义的变量相同。
if (!empty($variable)) {
通常,这会检查$variable
作为字符串((string) $variable
)的strlen
是否为0.但是true
会使其返回false
,因为将是非0和空数组的整数。出于某种原因(我认为这是错误的)$variable = '0';
将返回true
。
if ($variable) {
这种真/假检查就像(boolean) $variable
一样 - 基本上当转换为布尔值时变量是否返回true。
考虑它的一种方法是它与空行为相同,除了返回相反的值。
有关我(boolean) $variable
(类型转换/玩杂耍)的含义的详细信息,请参阅此manual page。
(PHP开发者:这主要是通过记忆,如果我错了,请纠正我!)
答案 2 :(得分:2)
在严格错误模式(E_STRICT)下运行时,条款
if ($variable) {}
和
if ($variable != null) {}
会在未初始化这些变量时抛出Notices。
Notice: Undefined variable: variable
这些通知是代码中缺陷的指标,因为使用未初始化是一个可能的安全漏洞。 (关键字:register_globals)。
我最喜欢检查变量的存在是
if (isset($variable)) {}
如果之前已使用过变量,则检查此变量(读取:使用值初始化!= null)。
答案 3 :(得分:1)
相关问题:Weak typing in PHP: why use isset at all?
基本上,在处理空值,空值,零和布尔值时,它们并不相同。