我想知道为什么PHP中的以下语句返回true?
true>=4
Run Code Online (Sandbox Code Playgroud)
例如,这样的线路将回响 1
echo true>=4;
Run Code Online (Sandbox Code Playgroud)
任何人都能解释一下这背后的逻辑吗?
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