Boolean / PHP:为什么“bool(1)> $ v”导致NULL?

时间:2016-07-28 21:04:59

标签: php boolean

在Toptal上看到这个问题并且有点困惑:

$v = 1;
$m = 2;
$l = 3;

if ($l > $m > $v) {
    echo "yes";
}
else {
    echo "no";
}

我明白为什么答案是“不”,但他们的推理对我来说有点混乱:

  

首先,将评估$l > $m,其产生布尔值1true。将该布尔值与整数值1(即bool(1) > $v)进行比较将得到NULL,因此输出将为“否”。

为什么bool(1) > $v变为null而不是undefinedfalse

2 个答案:

答案 0 :(得分:7)

它没有。 true > 1 is false(因为他们相反"相等")。

此外,the entire program will not run因为"双重条件"是一个解析错误。

您阅读的答案是错误

这就是为什么你不应该在互联网上接受随机陌生人的建议。包括我。 ;)

答案 1 :(得分:1)

仅供记录

<?php

$v = 1;
$m = 2;
$l = 3;

var_export( $l > $m ); // true
var_export( $m > $v ); // true
var_export( $l > ($m > $v) ); // false: (3 > true) = false
var_export( ($l > $m) > $v ); // false: (true > 1) = false
var_export( $l > $m > $v ); // parse error