学习PHP,布尔代数

时间:2014-04-01 17:50:26

标签: php boolean algebra

所以我刚刚开始学习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)。

2 个答案:

答案 0 :(得分:3)

那里提到了三个布尔运算符:&&(逻辑AND),||(逻辑OR)和XOR(好吧,它是逻辑XOR,或'异或') 。所有这些都是二进制的 - 它们需要两个操作数。显然,它的结果是一个布尔值 - truefalse

现在,它们的功能如下:

  • &&只会true只有{em> 其操作数评估为true,否则结果将为false
  • ||只会false只有{em> 其操作数评估为false,否则结果将为true
  • 如果
  • XOR的操作数评估为相同的值 - falsetrue,那么
  • false会产生false。但是,如果一个操作数评估为true,另一个操作数评估为true,则结果为echo true + true + false;

现在,在你问题的第二部分:这......

+

...与布尔代数没有任何关系。 true的所有操作数首先按照PHP文档的Type Juggling部分中描述的规则转换为数字类型。简而言之,1转换为false0转换为1 + 1 + 0;结果 - 2或{{1}}已打印出来。

答案 1 :(得分:1)

指的是and&&等具有不同的运算符优先级。

即,andor的功能与&&||的分配声明不同:

$f = false or true;

此外,运算符是短路运算符,因此如果您有false作为and&&的第一个操作数,那么整个表达式将立即进行求值在没有评估任何其他操作数的情况下到false

http://www.php.net/manual/en/language.operators.logical.php

相关问题