这些PHP条件是相同的还是有一个优势

时间:2009-01-05 17:52:53

标签: php variables conditional

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

if ($variable != NULL) {

if (!empty($variable)) {

if ($variable) {

它们不一样吗?如果您只是试图判断变量是否存在,似乎最后一个总是最简单的。感谢您帮助我理解这里的不同之处。我错过了PHP 101的第一天。

4 个答案:

答案 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?

基本上,在处理空值,空值,零和布尔值时,它们并不相同。