1

">=" 和 "==" 是非关联运算符,当它们彼此相邻时,它们会按优先级计算:

2 >= 3 == 3

就像是:

(2 >= 3) == 3 // ">=" have higher precedence over "=="

但是如果混合中有一个关联运算符,甚至更低优先级的运算符,它会根据关联运算符进行评估:

var_dump($a = 2 >= $b = 3 == 3); // bool(true)
var_dump(2 >= 3 == 3); // bool(false)

是这样的:

var_dump($a = 2 >= ($b = 3 == 3));
var_dump((2 >= 3) == 3); 

我理解正确吗?

4

1 回答 1

1

PHP 总是只解析定义的方式。并且赋予变量赋值更高(隐式)的优先级是必要的,因为赋值的左侧必须是变量。无法解析为($a = 2 >= $b) = 3 == 3. 它不依赖于关联性。

看这个例子;运算符&是关联的(而=>不是)。

$b = 2;
$a = 2 >= $b & 2;

在这种情况下,它是从左到右的。喜欢:

var_dump($a = ((2 >= $b) & 2)); // int (0)
var_dump($a = 2 >= $b & 2); // int (0)

相比于:

var_dump($a = (2 >= ($b & 2))); // bool (true)
于 2013-10-14T06:45:34.027 回答