什么';这些PHP if表达式之间的区别是什么?

什么';这些PHP if表达式之间的区别是什么?,php,if-statement,expression,Php,If Statement,Expression,这些PHP if表达式之间有什么区别 if ($var !== false) { // Do something! } if (false !== $var) { // Do something! } Zend Framework等一些框架使用最新的形式,而传统的是第一种形式 提前谢谢没有什么区别。操作数只是在不同的边上,但是比较是相同的。表达式的结果是相同的,但是这是一种保护自己不被赋值而不是比较的好方法(例如写入if($var=false)而不是if($var==fal

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

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


if (false !== $var)
{
    // Do something!
}
Zend Framework等一些框架使用最新的形式,而传统的是第一种形式


提前谢谢

没有什么区别。操作数只是在不同的边上,但是比较是相同的。

表达式的结果是相同的,但是这是一种保护自己不被赋值而不是比较的好方法(例如写入
if($var=false)
而不是
if($var==false)
,因为无法将值
$var
分配给
false
关键字)

这两个表达式在语义上是相同的。将常量表达式放在第一位还是最后一位只是偏好的问题。

没有区别<代码>==将2个表达式与类型检查进行比较,如果它们不相等,则返回true。差异可能在于表达式的计算顺序,但在您编写的示例中,没有差异(好的程序不能依赖于这些表达式的执行顺序)。

考虑以下情况:

if (strpos($string, $substring)) { /* found it! */ } 
如果在
$string
的确切开头找到
$substring
,则返回的值为0。 不幸的是,在if中,它的计算结果为
false
,因此不执行条件

正确的处理方法是:

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


false
始终保证为false。其他值可能无法保证这一点。例如,在PHP3中,
empty('0')
true
,但后来它变为
false

这实际上只是一个首选项。你可以这样说,a==b或b==a,但如果你这样做的话,更容易出错

if ($var == false)
因为如果您意外地键入一个=字母,条件将始终等于true(因为$var将被成功设置),但如果

if (false == $var)

如果您现在输入=,您将得到一个错误。

挑剔:“因为如果您不小心输入了一个=字母,条件将始终等于真”-这不是真的<代码>如果($var=false)与
$var=false相同;如果($var)
。因此,它的评价总是错误的。我没有否决你,但你没有回答这个问题。OP并不是在问
if($var)
/
if(func())
if($expectedValue===var)
/
if($expectedValue==func())
之间的区别,而是为什么在if语句条件中在变量之前列出常量会更好。