10

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

true>=4

例如这样的行会回显1

echo true>=4;

谁能解释一下这背后的逻辑?

4

2 回答 2

21

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

如果将 bool 或 null 与字符串以外的任何内容进行比较,则该内容将转换为 bool。请参阅文档

于 2012-12-04T21:09:46.020 回答
20

除了戴维斯的回答之外,我还想添加一些东西来增加一些深度。

PHP 与其他编程语言不同,如果您对运算符/语法不小心,您可能会像您遇到的那样陷入棘手的坑洞。

正如大卫所说,

4 也为真(因为它不为零),并且真等于真,所以它也大于或等于真。

考虑到这一点, 真大于假。

真 = 1

错误 = 0

以这个为例:

$test = 1;
if ($test == true){
echo "This is true"; 
}else{
echo "This is false";
}

以上将输出

这是真的

但如果你拿这个:

$test = 1;
if ($test === true){
echo "This is true"; 
}else{
echo "This is false";
}

以上将输出:

这是假的

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

我知道这有点离题,但只是想解释一下 PHP 包含的一些坑洞。

我希望这是一些帮助

编辑:

针对您的问题:

回声真>=4;

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

无论您是在做echo true>=4还是只是echo true;php 将 true 设为 1 并将 false 设为 0

于 2012-12-04T21:20:25.247 回答