PHP if表达式之间有什么区别?

时间:2010-04-21 13:31:57

标签: php if-statement expression

这些PHP if表达式之间有什么区别!?

if ($var !== false)
{
    // Do something!
}


if (false !== $var)
{
    // Do something!
}

Zend Framework等一些框架使用最新的形式,而传统的框架使用最新的形式。

提前致谢

6 个答案:

答案 0 :(得分:10)

表达式的结果是相同的,但它是保护自己免于分配而不是比较的好方法(例如,写if ($var = false)而不是if ($var == false),因为你不能赋值{{ 1}}到$var关键字)

答案 1 :(得分:2)

这只是一种偏好。你可以用任何一种方式,a == b或b == a,但如果你这样做会更容易出错

if ($var == false)

因为如果你不小心用一个=字母键入它,条件将始终等于true(因为$ var将成功设置),但是在

的情况下
if (false == $var)

如果您现在输入=,则会收到错误。

答案 2 :(得分:1)

这两个表达式在语义上是相同的。优先考虑是将常量表达式放在第一位还是最后一位。

答案 3 :(得分:0)

没有真正的区别。操作数只是在不同的方面,但比较是相同的。

答案 4 :(得分:0)

没有区别。 !==将2个表达式与类型检查进行比较,如果它们不相等则返回true。差异可能在表达式的评估顺序中,但在您编写的情况下,没有区别(并且良好的程序不能依赖于此类表达式的执行顺序)。

答案 5 :(得分:0)

考虑这种情况:

if (strpos($string, $substring)) { /* found it! */ } 

如果在$substring的确切开头找到$string,则返回的值为0。 不幸的是,在if中,这会求值为false,因此不会执行条件。

处理这个问题的正确方法是:

if (false !== strpos($string, $substring)) { /* found it! */ }

<强>结论:

false始终保证为假。其他值可能无法保证这一点。例如,在PHP 3中,empty('0')true,但稍后更改为false