所以我刚刚开始学习PHP,而且我遇到了一个我不太了解的部分。
这本书给了我三行。
&安培;&安培;和真实&& true = true,其他每个组合都会产生 false 。
||或假|| false = false,其他每个组合都会产生 true 。
XOR或false XOR true = true,其他每个组合都会产生 false 。
如果有人能澄清这意味着我会非常感激。
修改
以下是我上一部分的文字。
每个等式都会产生一个值:true(1)或false(0)。
echo true + true + false
这导致值为2(1 + 1 + 0)。
答案 0 :(得分:3)
那里提到了三个布尔运算符:&&
(逻辑AND),||
(逻辑OR)和XOR
(好吧,它是逻辑XOR,或'异或') 。所有这些都是二进制的 - 它们需要两个操作数。显然,它的结果是一个布尔值 - true
或false
。
现在,它们的功能如下:
&&
只会true
只有{em> 其操作数评估为true
,否则结果将为false
||
只会false
只有{em> 其操作数评估为false
,否则结果将为true
XOR
的操作数评估为相同的值 - false
或true
,那么false
会产生false
。但是,如果一个操作数评估为true
,另一个操作数评估为true
,则结果为echo true + true + false;
。现在,在你问题的第二部分:这......
+
...与布尔代数没有任何关系。 true
的所有操作数首先按照PHP文档的Type Juggling部分中描述的规则转换为数字类型。简而言之,1
转换为false
,0
转换为1 + 1 + 0
;结果 - 2
或{{1}}已打印出来。
答案 1 :(得分:1)
指的是and
和&&
等具有不同的运算符优先级。
即,and
或or
的功能与&&
和||
的分配声明不同:
$f = false or true;
此外,运算符是短路运算符,因此如果您有false
作为and
或&&
的第一个操作数,那么整个表达式将立即进行求值在没有评估任何其他操作数的情况下到false
。