我已经挖了一下,但我似乎无法找到一个简单的答案,为什么你不能编码像
<?php
$x=2;
if(1<$x<3) {
echo "Win!";
} else {
echo "Lose!";
}
?>
我的直觉是因为PHP左右读取,它会评估语句的前半部分(1<$x
),然后只看到&lt; 3这是没有意义的。我只是想让某人确认(或反驳)这种情况,并且每当你在PHP中提供条件时,你必须将每个条件分开。我不知道这是否会被称为逻辑或语法或其他东西,但你可以在其他上下文(如SAS)中编写这样的表达式并对它们进行评估,所以我只想理解为什么你不能在PHP。谢谢!
答案 0 :(得分:7)
PHP评估1 < $x
,然后将其结果与3
进行比较。换句话说,如果添加括号,PHP会将其视为((1 < $x) < 3)
。
如果1 < $x
为真,则比较变为1 < 3
;如果为false,则为0 < 3
。这是由于类型转换(从布尔到整数)。两者都评估为true,因此始终满足if条件。
你确实必须这样写:
if (1 < $x && $x < 3)
答案 1 :(得分:0)
<
和>
运算符求值为布尔值。这是从C继承的设计选择。