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

时间:2011-03-13 20:01:37

标签: php syntax logic conditional-statements

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

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

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

2 个答案:

答案 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继承的设计选择。