编程语言
首页 > 编程语言> > PHP运算符的优先级

PHP运算符的优先级

作者:互联网

我读到了=
优先级高于和

让我们说你得到了

$boolone = true;
$booltwo= false;
$res = $boolone and $booltwo;

我已经猜到这会因为$res = true而变为false而false则为true,false等于false.但由于=具有更高的优先级,它应该转为真.这是这样的

($res = $boolone) and $booltwo;

这返回true,但我的问题是为什么它返回true,不应该返回false?由于默认情况下$res = $booloneequals为true而$booltwois为false,所以我们有:true和false通常应该返回false,但同样,为什么是真的?

简单地说:

($res = $boolone) and $booltwo;
(true) and false; //returns true?

解决方法:

你是对的

$res = $boolone and $booltwo;

相当于

($res = $boolone) and $booltwo;

由于操作符的优先权,

$res = $boolone

首先评估,将$boolone的值分配给$res ….

$booltwo随后会得到第一个评估结果的结果(真和假),但是你没有对该评估做任何事情,所以它被简单地丢弃了……它没有被分配给$res,因为那个赋值有已经完成了第一次评估.

如果你这样做

var_dump($res = $boolone and $booltwo);

然后你会看到被丢弃的完整评估结果,$res仍然是真的

标签:php,boolean,operator-precedence,precedence
来源: https://codeday.me/bug/20190717/1486629.html