PHP Double Not(!!)运算符

double not(!!):在PHP中,变量的真值或表达式由double not(!!)'NOT NOT'运算符返回

用外行的话来说,它是变量或表达式的双重否定/双重补码。

对变量/表达式进行补充(通过使用逻辑运算符!)可得出否定。然后再次对其进行补码会产生最初存在的原始布尔值。

此外,可以通过说传递给double not-operator的具有TRUE值的表达式不变并保持TRUE来进行详细说明。表达式的FALSE值也保持FALSE。

但是,如果值保持不变,那么为什么要使用此运算符?可以实现检查在表达式/变量中是否存储了布尔数据(TRUE / FALSE)。

NOT(!)和NOT NOT(!!)运算符之间的差异可以通过例子来理解,如果一个表达式/变量是TRUE,则前者返回FALSE,而后者则返回true。

以下是说明!的效果的程序。和!布尔表达式上的运算符。

用来说明not运算符(!)和double not运算符(!!)的工作的程序

<?php 
    echo("Using ! operator for Boolean expression A.B \n");
    echo("A" . " ". "B" . " " . "EXP" . "\n");
    
    for ($i = 0; $i <= 1; $i++)
    {
        for ($j = 0; $j <= 1; $j++)
        {
           $expression = $i & $j;
           $expression = !$expression;
           if($expression==FALSE)
           $expression=0;
           echo($i . " ". $j . " " . $expression . "\n");
        }
    }
    
    echo("Using !! operator for Boolean expression A.B \n");
    echo("A" . " ". "B" . " " . "EXP" . "\n");
    
    for ($i = 0; $i <= 1; $i++)
    {
        for ($j = 0; $j <= 1; $j++)
        {
           $expression = $i & $j;
           $expression = !!$expression;
           if($expression==FALSE)
           $expression=0;
           echo($i . " ". $j . " " . $expression . "\n");
        }
    }
?>

输出:

Using ! operator for Boolean expression A.B

A B EXP
0 0 1
0 1 1
1 0 1
1 1 0
Using !! operator for Boolean expression A.B
A B EXP
0 0 0
0 1 0
1 0 0
1 1 1

另一个例子可以更好地理解这个概念。现在,如果有任何数字(整数或浮点类型),并且大于0,则将其视为1。

因此,当被否定时,结果为0。但是当通过双重否定两次时,结果不是!运算符,它不返回原始值,而是1。

用一个例子可以进一步理解。让我们以数字77为例。它将被视为TRUE布尔值,因此当与!互补时!给我们0,即FALSE布尔值。现在补0给我们1。