我正在尝试一些Boolean
值,只是出于好奇我试过这个:
$_r = TRUE + FALSE;
if ($_r) ? print 'TRUE' : print 'FALSE'; // Prints TRUE
我发现返回TRUE
,甚至减法(无论顺序)TRUE - FALSE
都会返回TRUE
。
这是可能的,添加,乘法,除法或减去Boolean
值吗?
答案 0 :(得分:5)
关于type juggling的PHP文档的快速引用:
PHP的自动类型转换的一个例子是加法运算符'+'。如果任一操作数是浮点数,则两个操作数都被计算为浮点数,结果将是浮点数。否则,操作数将被解释为整数,结果也将是整数。请注意,这不会改变操作数本身的类型;唯一的变化是如何评估操作数以及表达式本身的类型。
让我们将其应用于您的代码$_r = TRUE + FALSE;
:由于所有操作数(TRUE
和FALSE
)都不是浮点数,因此它们将转换为整数(TRUE
== { {1}},1
== FALSE
),加法变为0
。结果(整数1+0
)存储在变量1
中。
在下一个语句($_r
)上,if
statement获取括号内的表达式并计算其布尔值。任何不等于零的整数都是if ($_r) print 'TRUE'; else print 'FALSE';
,零是TRUE
。 FALSE
的值为$_r
并转换为布尔值,变为1
。因此,代码打印TRUE
。
答案 1 :(得分:1)
好吧,PHP似乎可以接受这一点,因为它将print (int_mult(4.49,"android"))
和TRUE
值分别视为FALSE
和1
,并且常见数学0
值完全允许加法,减法,除法和乘法运算,这是证明:
Boolean