• php=运算符


    下表按照优先级从高到低列出了运算符。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序

     例1:||与=

    $a=0;
    $b=0;
    if($a=3||$b=3){
         $a++;
         $b++;
    }
    echo $a;//输出1
    echo $b;//输出1
    解释:
    
    

    1,从上图可以看出逻辑运算符||的优先级高于赋值运算符=

    
    

    2,在if条件判断时,实际是$a=(3||$b=3),括号里3为真,由于逻辑运算符||,只要前面的条件成立,后面不会进行运算,故而$b依旧等于0,不是3

    
    

    3,$a=(3||$b=3),括号返回的是bool值,为true,由于递增递减不影响bool值。递减NULL也没有效果,但递增NULL的结果是1,故而$a++之后$a为1

    
    

    4,由于$a=(3||$b=3)中$b=3赋值运算没有运行,故$b=0,$b++之后$b=1

    
    

    5,$a为bool类型,var_dump($a),则是boolean true,echo $a,则是1

     

     例2:逻辑运算符||和&&,or和and

    $a=0;
    $b=0;
    if($a=3 or $b=3){
         $a++;
         $b++;
    }
    echo $a;//输出4
    echo $b;//输出1
    

      解释:

    1,从上图可以看到赋值运算符=的优先级高于逻辑运算符or

    2,在if条件判断时,实际是($a=3) or $b=3,此时先进行赋值运算$a=3,由于($a=3)为真,由于逻辑运算符or,前面的条件成立,后面不会进行运算,故而$b依旧等于0,不是3

    3,$a等于3,$a++之后$a=4,$b=0,$b++之后$b=1

    例4:++ 与 --

    $a=1;
    echo $a+++$a--;//输出3
    echo $a;//输出1
     
    $b=1;
    echo $b--+$b++;//输出1
    echo $b;//输出1
     
    $c=1;
    echo ++$c+$c++;//输出4
    echo $c;//输出3

    解释:

    1,$a+++$a--,计算过程是先运行$a++,在运算时($a++)的值为1,$a++之后$a=2,然后运行$a--,此时$a=2,故($a--)的值为2,$a--运算之后$a=1,故运算结果是3,$a=1

    2,$b--+$b++,计算过程先运行$b--,此时($b--)的值是1,$b--后$b=0,接着运行$b++,($b++)的值是0,$b++之后$b=1,故运算结果是1,$b=1

    3,++$c+$c++,先运算(++$c),(++$c)的值为2,$c=2,接着运行($c++),此时$c=2,故而($c++)的值为2,运行完$c++之后$c=3,故而运算结果是3,$a=1

    例5:$a++ 和++$a区别

    1、++$a的用法

    首先++$a等价于$a = $a + 1,比如$a初始值为1,那么$a = 1 + 1得出$a为2。

    ++$a执行过程:先将$a加1,假设结果为x,然后把x赋值给$a,所以$a的值等于x的值。

    2、$a++的用法(以 x=a++ ,a=2 为例)

    先将a值赋给变量 x(也就是 x=a ),然后 a 值加 1 (也就是 a = a + 1)

    则最终x值等于2,a 值等于3,所以x = a++相当于 x = a , a = a + 1。

    <?php
        $a = 1;
        $x = $a++;
        echo 'x='.$x.'<hr />';
        echo 'a='.$a.'<hr />';
        $b = ++$a;
        echo 'b='.$b.'<hr />';
        echo $x+$b;
    ?>

    结果:x = 1,a = 2,b = 3,4。

    总结
    x = ++a相当于a++,x = a。
    x = a++相当于x=a,a++。
    ++a与a++ 单独使用时,相当于 a = a + 1。
    如果赋给一个新变量,则++a先将a值加1 ,而a++先将a赋给新变量。

  • 相关阅读:
    ssh代理转发
    了解ssh代理:ssh-agent
    ssh使用密钥进行认证
    拾遗之”三元运算”与”打印奇偶行”
    MySQL 8.0二进制包安装
    awk内置函数
    awk数组详解
    awk动作总结之二
    awk动作总结之一
    [shell]批量抽取文件并重命名
  • 原文地址:https://www.cnblogs.com/zh718594493/p/13715412.html
Copyright © 2020-2023  润新知