标签:php boolean operator-precedence precedence
我读到了=
优先级高于和
让我们说你得到了
$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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。