Php 理解数字和布尔值之间的不等式比较

Php 理解数字和布尔值之间的不等式比较,php,numbers,comparison,boolean,inequalities,Php,Numbers,Comparison,Boolean,Inequalities,PHP文档中的类型显示了严格的==和松散的=比较的结果。不平等性比较没有任何意义: true < 0 => false 0 < true => true true < 1 => false 1 < true => false true < -1 => false -1 < true => false truefalse 0true 真假 1false 真假 -1false falsefalse 0false 假真 1f

PHP文档中的类型显示了严格的
==
和松散的
=
比较的结果。不平等性比较没有任何意义:

true < 0 => false
0 < true => true
true < 1 => false
1 < true => false
true < -1 => false
-1 < true => false
true<0=>false
0true
真<1=>假
1false
真<-1=>假
-1false

false<0=>false
0false
假<1=>真
1false
假<-1=>真
-1false

有人能合理化上述结果吗?

将布尔值转换为整数时,true将转换为1,false将转换为0

从PHP手册:

来自布尔人

FALSE将产生0(零),TRUE将产生1(一)

此外:

-1被认为是真的,就像任何其他非零(无论是负数还是正数)数字一样

true<0=>false=>true<(bool)(0)=>true1<0=false
0true=>(bool)(0)false0<1=true
true<1=>false=>truetrue1<1=false
1false=>(bool)(1)=>true1<1=false
true<-1=>false=>true<(bool)(-1)=>true1<1=false
-1false=>(bool)-1true1<1=false
false<0=>false=>false<(bool)(0)=>false0<0=false
0false=>(bool)(0)false0<0=false
false<1=>true=>false<(bool)(1)=>false0<1=true
1false=>(bool)(1)true1<0=false
false<-1=>true=>false<(bool)(-1)=>false0<1=true
-1false=>(bool)-1true1<0=false

将布尔值转换为整数时,true将转换为1,false将转换为0

从PHP手册:

来自布尔人

FALSE将产生0(零),TRUE将产生1(一)

此外:

-1被认为是真的,就像任何其他非零(无论是负数还是正数)数字一样

true<0=>false=>true<(bool)(0)=>true1<0=false
0true=>(bool)(0)false0<1=true
true<1=>false=>truetrue1<1=false
1false=>(bool)(1)=>true1<1=false
true<-1=>false=>true<(bool)(-1)=>true1<1=false
-1false=>(bool)-1true1<1=false
false<0=>false=>false<(bool)(0)=>false0<0=false
0false=>(bool)(0)false0<0=false
false<1=>true=>false<(bool)(1)=>false0<1=true
1false=>(bool)(1)true1<0=false
false<-1=>true=>false<(bool)(-1)=>false0<1=true
-1false=>(bool)-1true1<0=false

true<0=>false=>1<0=>false(0==0=>true)
0true==>0<1=>true
true<1=>false==>1<1=>false(1==1==>true)
1false==>1<1=>false(1==1==>true)
true<-1=>false==>1<-1=>false
-1false==>-1<1=>false===>1<1=>false(布尔类型被视为无符号)
===> false<0=>false==>0<0=>false
0false==>0<0=>false
false<1=>true==>0<1=>true
1false==>1<0=>false
false<-1=>true==>0<-1=>true===>0<1=>true(布尔类型被视为无符号)

-1false==>1<0=>false==>1<0=>false(布尔类型被视为无符号)

true<0=>false=>1<0=>false(0==0=>true)
0true==>0<1=>true
true<1=>false==>1<1=>false(1==1==>true)
1false==>1<1=>false(1==1==>true)
true<-1=>false==>1<-1=>false
-1false==>-1<1=>false===>1<1=>false(布尔类型被视为无符号)
===> false<0=>false==>0<0=>false
0false==>0<0=>false
false<1=>true==>0<1=>true
1false==>1<0=>false
false<-1=>true==>0<-1=>true===>0<1=>true(布尔类型被视为无符号)

-1false==>-1<0=>false===>1<0=>false(布尔类型被视为无符号)

应该是
-1false=>bool(-1)=true
顺便问一下,它在哪里说
true>false
?谢谢:)因为bool在默认情况下将被转换为整数,所以true是1,false是0,从逻辑上讲,true应该大于false……嘿,我刚刚意识到你的答案仍然不正确。它不适用于
false<-1=>true
是的,你是对的。我得到了正确的答案,我将很快更新此帖子。在你的初始答案中,左侧变量被强制转换为与右侧的类型匹配。现在数字转换为布尔值。我需要知道你从哪里得到这个基础。它写在文件的某个地方吗?你怎么知道?应该是
-1false=>bool(-1)=true
顺便问一下,它在哪里说
true>false
?谢谢:)因为bool在默认情况下将被转换为整数,所以true是1,false是0,从逻辑上讲,true应该大于false……嘿,我刚刚意识到你的答案仍然不正确。它不适用于
false<-1=>true
是的,你是对的。我得到了正确的答案,我将很快更新此帖子。在你的初始答案中,左侧变量被强制转换为与右侧的类型匹配。现在数字转换为布尔值。我需要知道你从哪里得到这个基础。它写在文件的某个地方吗?你怎么知道的?你能为你提供一些依据吗
false < 0 => false
0 < false => false
false < 1 => true
1 < false => false
false < -1 => true
-1 < false => false
true  < 0 => false => true < (bool)(0) => true < false => 1 < 0 = false
0 < true => true  => (bool)(0) < true => false < true => 0 < 1 = true
true < 1 => false => true < (bool)(1) => true < true => 1 < 1 = false
1 < true => false => (bool)(1) < true => => true < true => 1 < 1 = false
true < -1 => false => true < (bool)(-1) => true < true => 1 < 1 = false
-1 < true => false => (bool)(-1) < true => true < true = > 1 < 1 = false

false < 0 => false => false < (bool)(0) => false < false => 0 < 0 = false
0 < false => false => (bool)(0) < false => false < false => 0 < 0 = false
false < 1 => true => false < (bool)(1) => false < true => 0 < 1 = true
1 < false => false => (bool)(1) < false => true < false => 1 < 0 = false
false < -1 => true => false < (bool)(-1) => false < true => 0 < 1 = true
-1 < false => false => (bool)(-1) <  false => true < false => 1 < 0 =  false