为什么PHP中的大于3

Dha*_*man 8 php types casting

我想知道为什么PHP中的以下语句返回true?

true>=4
Run Code Online (Sandbox Code Playgroud)

例如,这样的线路将回响 1

echo true>=4;
Run Code Online (Sandbox Code Playgroud)

任何人都能解释一下这背后的逻辑吗?

Dav*_*rtz 20

4也是true(因为它不为零),并且true等于true,所以它也大于或等于true.

如果将bool或null与字符串以外的任何东西进行比较,则会将该东西强制转换为bool.查看文档.

  • 因此,数字被转换为布尔值而不是反之亦然...这是多么神奇的语言...... (2认同)

Dar*_*ill 18

除了戴维斯的答案之外,我还想添加一些内容以提供更多深度.

PHP与其他编程语言不同,如果你不小心你的操作符/语法,你可能会遇到像你遇到的那样棘手的漏洞.

正如大卫所说,

4也是如此(因为它不为零),而true等于true,所以它也大于或等于true.

考虑到这一点, 真是大于假.

true = 1

假= 0

所以以此为例:

$test = 1;
if ($test == true){
echo "This is true"; 
}else{
echo "This is false";
}
Run Code Online (Sandbox Code Playgroud)

以上将输出

这是真的

但如果你拿这个:

$test = 1;
if ($test === true){
echo "This is true"; 
}else{
echo "This is false";
}
Run Code Online (Sandbox Code Playgroud)

以上将输出:

这是错误的

添加的等号,寻找完全匹配,因此寻找integer 1而不是PHP读取1为真.

我知道这有点偏离主题,但只是想解释PHP包含的一些漏洞.

我希望这是一些帮助

编辑:

回答你的问题:

echo true> = 4;

您看到1为输出的原因是因为true/false被解释为数字(见上文)

无论你做什么echo true>=4或只是echo true;php将true设置为1而false设置为0