这些PHP if表达式之间有什么区别!?
if ($var !== false)
{
// Do something!
}
if (false !== $var)
{
// Do something!
}
Zend Framework等一些框架使用最新的形式,而传统的框架使用最新的形式。
提前致谢
答案 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
。