我想知道为什么 PHP 中的以下语句返回 true?
true>=4
例如这样的行会回显1
echo true>=4;
谁能解释一下这背后的逻辑?
4
也是true
(因为它不为零),并且true
等于true
,所以它也大于或等于true
。
如果将 bool 或 null 与字符串以外的任何内容进行比较,则该内容将转换为 bool。请参阅文档。
除了戴维斯的回答之外,我还想添加一些东西来增加一些深度。
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