1
$bBoolVal = ((6 < 5) Or (13 - 6 > 0));
if ($bBoolVal)  echo 'makes sense'; else echo 'makes no sense';

结果:“有道理”

$bBoolVal = (6 < 5) Or (13 - 6 > 0);
if ($bBoolVal)  echo 'makes sense'; else echo 'makes no sense';

结果:“没有意义”

就好像 '=' 比 'Or' 绑定得更紧——当然不是?

4

5 回答 5

1

根据 PHP 中的运算符优先级,该行为是正确的。

http://php.net/manual/en/language.operators.precedence.php

'&&', '||'优先级高于'=',但 的'='优先级高于 'and', 'or'

于 2013-08-03T14:32:15.697 回答
0

It is as if '=' binds tighter than 'Or' - surely not?

It does.

It starts with OR and evaluates the right side first: the return value of the assignment is false. The value of the whole expression is true but you only check for what was assigned to $bBoolVal.

于 2013-08-03T14:24:37.800 回答
0

检查运算符优先级

使用||而不是or使其绑定比=.

于 2013-08-03T14:28:54.387 回答
0

您的其他形式的代码:

$bBoolVal = ((false) Or (true)); //true
if ($bBoolVal)  echo 'makes sense'; 
else echo 'makes no sense';



$bBoolVal = (false) Or (true); //false
(($bBoolVal  = false) or true) //equivalent expression which is false

if ($bBoolVal)  echo 'makes sense'; 
else echo 'makes no sense';
于 2013-08-03T14:29:30.203 回答
0

是的,= 具有更高的优先级。在 php 手册中经常可以看到利用此机制的一个熟悉示例:

$result = mysql_query($sql) or die(mysql_error());

它像

$result = mysql_query($sql);
if (!$result) die(mysql_error());
于 2013-08-03T14:33:20.500 回答