我读到了=
优先级高于和
让我们说你得到了
$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 举报,一经查实,本站将立刻删除。