Почему я не могу иметь условие PHP, написанное как 1 <$ x <3? - PullRequest
1 голос
/ 13 марта 2011

Я немного покопался, но не могу найти простой ответ, почему вы не можете написать что-то вроде

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

Моя интуиция говорит, что поскольку PHP читает влево-вправо, он оценивает первую половину оператора (1<$x) и затем просто видит <3, что не имеет смысла. Я просто хотел бы, чтобы кто-то подтвердил (или опроверг), что это так, и что каждый раз, когда вы предоставляете условия в PHP, вы должны выделять каждое из них. Я не знаю, будет ли это называться логикой, синтаксисом или чем-то еще, но вы можете написать выражения, подобные этим, в других контекстах (например, SAS) и оценить их, поэтому я просто хотел бы понять, почему вы не можете в PHP. Спасибо! </p>

Ответы [ 2 ]

7 голосов
/ 13 марта 2011

PHP оценивает 1 < $x, затем сравнивает результат с 3. Другими словами, если вы добавите скобки, PHP увидит это как ((1 < $x) < 3).

Если 1 < $x истинно, сравнение становится 1 < 3; если ложно, это 0 < 3. Это связано с преобразованием типов (из логического в целое). Оба имеют значение true, поэтому условие if всегда выполняется.

Вы действительно должны будете написать это так:

if (1 < $x && $x < 3)
0 голосов
/ 13 марта 2011

Операторы < и > оцениваются как логические значения. Это был дизайнерский выбор, перенесенный с C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...