为什么我不能将PHP条件写为1 <$ x <3?

1 php syntax logic conditional-statements

我已经挖了一下,但我似乎无法找到一个简单的答案,为什么你不能编码类似的东西

<?php 
  $x=2;
  if(1<$x<3) {
    echo "Win!";
    } else {
    echo "Lose!";
  }
?>
Run Code Online (Sandbox Code Playgroud)

我的直觉说因为PHP左右读取,它会评估语句的前半部分(1<$x),然后只看到<3,这是没有意义的.我只是想让某人确认(或反驳)这种情况,并且每当你在PHP中提供条件时,你必须将每个条件分开.我不知道这是否会被称为逻辑或语法或其他东西,但你可以在其他上下文(如SAS)中编写这样的表达式并对它们进行评估,所以我只想理解为什么你不能在PHP.谢谢!

Bol*_*ock 7

PHP评估1 < $x,然后将结果与之比较3.换句话说,如果添加括号,PHP会将其视为((1 < $x) < 3).

如果1 < $x是,则比较变为1 < 3; 如果是假的,那就是0 < 3.这是由于类型转换(从布尔到整数).两者都评估为true,因此始终满足if条件.

你确实必须这样写它:

if (1 < $x && $x < 3)
Run Code Online (Sandbox Code Playgroud)