微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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仍然是真的

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐