php中布尔值的数学运算

php中布尔值的数学运算,php,Php,我正在试验一些布尔值,出于好奇,我尝试了以下方法: $_r = TRUE + FALSE; if ($_r) ? print 'TRUE' : print 'FALSE'; // Prints TRUE 我发现它返回TRUE,甚至减法(无论顺序如何)TRUE-FALSE也返回TRUE。 有可能对布尔值进行加法、乘法、除法或减法吗?看来这是可以接受的,因为它分别将真值和假值视为1和0,加、减、,对于布尔值完全允许除法和乘法,以下是证明: $_r = FALSE * TRUE; // (0 * 1

我正在试验一些
布尔值,出于好奇,我尝试了以下方法:

$_r = TRUE + FALSE;
if ($_r) ? print 'TRUE' : print 'FALSE'; // Prints TRUE
我发现它返回
TRUE
,甚至减法(无论顺序如何)
TRUE-FALSE
也返回
TRUE

有可能对
布尔值进行加法、乘法、除法或减法吗?

看来这是可以接受的,因为它分别将
真值
假值
视为
1
0
,加、减、,对于
布尔值
完全允许除法和乘法,以下是证明:

$_r = FALSE * TRUE; // (0 * 1)
if ($_r) ? print 'TRUE' : print 'FALSE'; // prints FALSE

$_r = FALSE / TRUE; // (0 / 1)
if ($_r) ? print 'TRUE' : print 'FALSE'; // prints FALSE

$_r = TRUE / FALSE; // (1 / 0)
if ($_r) ? print 'TRUE' : print 'FALSE'; // prints Warning: **Division by zero**

嗯,这似乎是可以接受的,因为它将
TRUE
FALSE
值分别视为
1
0
,并且
布尔值完全允许加、减、除和乘的常见数学运算,下面是证明:

$_r = FALSE * TRUE; // (0 * 1)
if ($_r) ? print 'TRUE' : print 'FALSE'; // prints FALSE

$_r = FALSE / TRUE; // (0 / 1)
if ($_r) ? print 'TRUE' : print 'FALSE'; // prints FALSE

$_r = TRUE / FALSE; // (1 / 0)
if ($_r) ? print 'TRUE' : print 'FALSE'; // prints Warning: **Division by zero**

PHP文档中关于以下内容的快速引用:

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

让我们将此应用于您的代码
$\u r=TRUE+FALSE
:由于操作数(
TRUE
FALSE
)都不是浮点数,因此它们被转换为整数(
TRUE
=
1
FALSE
=
0
),加法变成
1+0
。结果(整数
1
)存储在变量
$\r


在下一条语句(
if($_r)print'TRUE';else print'FALSE';
)中,接受括号内的表达式并计算其布尔值。任何不同于零的整数都是
TRUE
,零是
FALSE
$\u r
的值为
1
,并转换为布尔值,即为
TRUE
。因此,代码将打印PHP文档中关于以下内容的快速引用:

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

让我们将此应用于您的代码
$\u r=TRUE+FALSE
:由于操作数(
TRUE
FALSE
)都不是浮点数,因此它们被转换为整数(
TRUE
=
1
FALSE
=
0
),加法变成
1+0
。结果(整数
1
)存储在变量
$\r


在下一条语句(
if($_r)print'TRUE';else print'FALSE';
)中,接受括号内的表达式并计算其布尔值。任何不同于零的整数都是
TRUE
,零是
FALSE
$\u r
的值为
1
,并转换为布尔值,即为
TRUE
。因此,代码打印出
TRUE

别忘了埃尔维斯<代码>打印$_r?'TRUE':'FALSE'我与反对票无关。我只是指出,你可以使用另一种语法,使用所谓的elvis运算符,或三元运算符。无意伤害我不知道这个名字也叫“好”!至于否决票的问题是:“我的答案怎么了?”不是针对你的。别忘了埃尔维斯<代码>打印$_r?'TRUE':'FALSE'我与反对票无关。我只是指出,你可以使用另一种语法,使用所谓的elvis运算符,或三元运算符。无意伤害我不知道这个名字也叫“好”!至于否决票的问题是:“我的答案怎么了?”不是针对你的。简单:PHP类型Juggling如果你来这里是因为我这样的大脑放屁:简单:PHP类型Juggling如果你来这里是因为我这样的大脑放屁: