由逻辑异或运算符而发现的PHP诡异运算符优先级

本文深入探讨了PHP中逻辑运算符xor的使用及其优先级问题,通过实例对比,揭示了运算符优先级对结果的影响,并提供了正确的使用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PHP的逻辑运算符中,xor表示逻辑异或

$a xor $b

结果

如果 $a$b 有且仅有一个为 true,则返回 true;如果都是truefalse,则返回false

然而在测试xor运算符时,发现一点问题
错误情况1

<?php
        $a = false xor true;
        var_dump($a);
?>

结果1

boolean false

情况2

<?php
        $a = true xor false;
        var_dump($a);
?>

结果2

boolean true

这是怎么回事呢?


我们换个测试xor运算符的方式
情况3

<?php
        echo false xor true;
?>

结果3

1

这样就没问题了,那么前两种情况是哪里有毛病呢?


情况4

<?php
        $a = (false xor true);
        var_dump($a)
?>

结果4

boolean true

这样就对了,可见应是运算符优先级导致的。


在PHP中,and、or、xor的运算符优先级是比 = 低的,在这种情况下,加个小括号就好了……

转载于:https://www.cnblogs.com/Genesis2018/p/9079807.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值