Php 条件语句中的顺序

Php 条件语句中的顺序,php,Php,可能重复: 我注意到很多PHP代码使用条件语句,比如CONST==VARIABLE。我是在语法总是反向表达的情况下长大的。这种结构有什么原因吗 例如: // this is the way I see it most typically represented in PHP if ( false == $foobar ) { // do this } // this is the way I normally do it if ( $foobar == false ) { // do

可能重复:

我注意到很多PHP代码使用条件语句,比如CONST==VARIABLE。我是在语法总是反向表达的情况下长大的。这种结构有什么原因吗

例如:

 // this is the way I see it most typically represented in PHP
 if ( false == $foobar ) { // do this }

 // this is the way I normally do it
 if ( $foobar == false ) { // do this }

通常的做法正是大多数程序员的做法。第一个示例称为yoda条件:


这是为了防止在
=
=
之间出现常见的打字错误,称为yoda情况。考虑以下事项:

if( false = $foobar) {
这将导致一个错误,捕获被认为是bug的内容,因为您不能将任何内容分配给
false
。相反:

if( $foobar = false) { 
这是有效的语法,很容易犯错误


然而,我通常更喜欢
if($foobar==false)
语法,因为单元测试应该能够捕获这些编程错误。

它通常被称为“Yoda条件”。有些人用它来代替平等来防止分配错误。我的意见不是引入拼写错误,而是采用一种奇怪的编码惯例来防止拼写错误。这样做更好:如果(!$foobar){//do this}但两者都有相同的结果,我想知道为什么有人会在简单的
时显式测试
$foobar==false
$foobar
应该已经足够了。)当然,
$foobar==false
完全是另一回事。)@raina77ow在PHP和其他一些动态类型的langs中,boolean
FALSE
与“falsiness”是一个独立的特定事物。考虑<代码> $var =“”< /代码>;代码>$var为true,但有时需要验证它实际上是布尔值
FALSE
。对于PHP,它有助于同时返回
0
FALSE
的函数,例如
strpos()
。所以,
$foobar=strpos($haystack,$needle)
可以有一个有效的返回值
0
,或者错误时返回值
false
。你们是否都在暗示这种测试可以通过
=
?)但这是原始问题中使用的形式,因此我的评论。