php中使用布尔值的数学运算

时间:2016-04-30 13:01:45

标签: php

我正在尝试一些Boolean值,只是出于好奇我试过这个:

$_r = TRUE + FALSE;
if ($_r) ? print 'TRUE' : print 'FALSE'; // Prints TRUE

我发现返回TRUE,甚至减法(无论顺序)TRUE - FALSE都会返回TRUE。 这是可能的,添加,乘法,除法或减去Boolean值吗?

2 个答案:

答案 0 :(得分:5)

关于type juggling的PHP文档的快速引用:

  

PHP的自动类型转换的一个例子是加法运算符'+'。如果任一操作数是浮点数,则两个操作数都被计算为浮点数,结果将是浮点数。否则,操作数将被解释为整数,结果也将是整数。请注意,这不会改变操作数本身的类型;唯一的变化是如何评估操作数以及表达式本身的类型。

让我们将其应用于您的代码$_r = TRUE + FALSE;:由于所有操作数(TRUEFALSE)都不是浮点数,因此它们将转换为整数(TRUE == { {1}},1 == FALSE),加法变为0。结果(整数1+0)存储在变量1中。

在下一个语句($_r)上,if statement获取括号内的表达式并计算其布尔值。任何不等于零的整数都是if ($_r) print 'TRUE'; else print 'FALSE';,零是TRUEFALSE的值为$_r并转换为布尔值,变为1。因此,代码打印TRUE

答案 1 :(得分:1)

好吧,PHP似乎可以接受这一点,因为它将print (int_mult(4.49,"android")) TRUE值分别视为FALSE1,并且常见数学0值完全允许加法,减法,除法和乘法运算,这是证明:

Boolean