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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值