php中$a==5和5==a之间的差异
今天我面对一个问题,我无法回答, 我曾经尝试过制作一个php程序,但无法找到它的确切原因 如果$a=5,那么($a==5和5==a)都会以布尔值true和, 如果$a!=5然后($a==5和5==a)都将输出作为布尔值false 有人能告诉我从任何语言角度来看$a==5和$a==5之间的区别吗。php中$a==5和5==a之间的差异,php,Php,今天我面对一个问题,我无法回答, 我曾经尝试过制作一个php程序,但无法找到它的确切原因 如果$a=5,那么($a==5和5==a)都会以布尔值true和, 如果$a!=5然后($a==5和5==a)都将输出作为布尔值false 有人能告诉我从任何语言角度来看$a==5和$a==5之间的区别吗。 **Program** $a = 3; var_dump( 5==$a ); var_dump( $a==5 ); $a = 5; var_dump( 5==$a ); var_dump( $a==5
**Program**
$a = 3;
var_dump( 5==$a );
var_dump( $a==5 );
$a = 5;
var_dump( 5==$a );
var_dump( $a==5 );
**Output**
boolean false
boolean false
boolean true
boolean true
这样的比较不受您首先写入的值的影响。但是,最好将文字放在第一位,例如
5==$x
,因为如果你搞砸了,只输入一个等号,你会得到一个错误,而不是一个意外的值赋值,这更容易调试。没有区别
但是5==a
可以防止在您忘记一个'='时出现错误
例如$a=1
- 如果写入if($a=5)-$a值变为5
- 如果你写if(5=$a),你会得到一个错误
$a=5
,而5=$a
抛出一个错误,防止您创建讨厌的bug。5==a
与$a==5
在逻辑上相同
此格式通常称为yoda条件,不影响逻辑比较
通常在PHP中,最好防止条件中的意外赋值,条件总是以truthy或falsy进行计算,但实际上不会执行缩进条件检查:
if ($a = 5) {
// always run... oops
} else {
// never run
}
他们对此也有一个很好的解释没有区别,你只是在改变他们的立场。这就是所谓的:尤达条件:否则就没有区别。你从来没有想过。。。我一直都是这样做的,就像20年前我所想的那样。当我老了……你可能会指出,这项比较被称为
yoda
comparison