PHP xor 返回错误值

标签 php xor

我正在使用 php 7.1.0 运行这个小测试:

<?php

$a = true;
$b = true;

$value = $a xor $b;
if ($value == true) {
    print "bad!\n";
} else {
    print "good\n";
}    

然后它又回来说不好。为什么?两个真值的异或应该为假,而不是真。

最佳答案

问题是运算符优先级。 xor 运算符的优先级低于 =,因此您的语句等效于:

($value = $a) xor $b;

你需要写:

$value = ($a xor $b);

$value = $a ^ $b;

^ 运算符是按位异或,而不是 bool 值。但是 truefalse 将被转换为 10,并且按位结果将等同于 bool 结果。但如果变量的原始值可能是数字,这将不起作用——所有非零数字都是真实的,但是当你对它们执行按位异或时,你会得到任何两个不同数字的真实结果.

参见 PHP Operator Precedence Table

查看相关Assignment in PHP with bool expression: strange behaviour

关于PHP xor 返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41799954/

相关文章:

php - MySQL:如果已使用 INSERT INTO 使用唯一字段,如何执行操作

c++ - 使用引用或指针通过 xor 运算符交换两个变量的值

c# - 无法将类型 'int' 隐式转换为 'string'

java - java中^运算符如何工作?补充

PHP:如何使用数组索引访问数组元素值

php - 将天数转换为年数和剩余天数

c++ - 我们能否使用位操作来确定 0 在数组中是否出现奇数次

时间:2019-03-09 标签:c#xorfunctionality

php - 如何从多个对象构建流/源?

php - 通过 PHP 发送包含 CSS 样式表的 HTML 电子邮件