Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中$a==5和5==a之间的差异_Php - Fatal编程技术网

php中$a==5和5==a之间的差异

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

今天我面对一个问题,我无法回答, 我曾经尝试过制作一个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 );


**Output**
boolean false

boolean false

boolean true

boolean true

这样的比较不受您首先写入的值的影响。但是,最好将文字放在第一位,例如
5==$x
,因为如果你搞砸了,只输入一个等号,你会得到一个错误,而不是一个意外的值赋值,这更容易调试。

没有区别

但是
5==a
可以防止在您忘记一个'='时出现错误

例如$a=1

  • 如果写入if($a=5)-$a值变为5
  • 如果你写if(5=$a),你会得到一个错误

这只是一种技术,可以防止您意外地使用赋值而不是比较。if操作符愉快地接受
$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