PHP7实践指南:O2O网站与App后台开发
上QQ阅读APP看书,第一时间看更新

2.2 运算符

运算符是说明特定操作的符号,是构造PHP语言表达式的工具,本节介绍PHP语言常用的运算符及其使用。

1.算术运算符

算术运算符可以对整型和浮点型的数据进行运算。PHP中的算术运算符如表2-1所示。

表2-1 算术运算符

下面示例演示了不同算术运算符的使用。

        <? php
        $x=10;
        $y=3;
        echo ($x + $y);
        echo "<br/>";
        echo ($x - $y);
        echo "<br/>";
        echo ($x * $y);
        echo "<br/>";
        echo ($x / $y);
        echo "<br/>";
        echo ($x %$y);
        echo "<br/>";
        echo intdiv(10,3);
        ?>

执行以上代码输出结果如下:

        13
        7
        30
        3.3333333333333
        1
        3

2.递增递减运算符

递增递减运算符如表2-2所示。

表2-2 递增递减运算符

递增递减运算符的使用实例如下:

        <? php
        $x=2;
        echo++$x;         //输出3
        $x=5;
        echo$x++;         //输出5
        $x=7;
        echo--$x;          //输出6
        $x=9;
        echo$x--;          //输出9
        ?>

执行以上代码在浏览器中的打印结果是:

        3569

3.比较运算符

比较运算符如表2-3所示。

表2-3 比较运算符

比较运算符的使用示例如下:

        <? php
        $x=100;
        $y="100";
        var_dump($x==$y);  //bool(true)
        var_dump($x===$y);   //bool(false)
        var_dump($x ! =$y);  //bool(false)
        var_dump($x ! ==$y);  //bool(true)
        $a=50;
        $b=90;
        var_dump($a>$b);  //bool(false)
        var_dump($a<$b);  //bool(true)
        var_dump($a<>$b);  //bool(true)
        var_dump($a<=>$b);  //int(-1)
        var_dump($b<=>$a);  //int(1)
        var_dump($x<=>$y);  //int(0)
        ?>

4.逻辑运算符

逻辑运算符如表2-4所示。

表2-4 逻辑运算符

逻辑运算符的使用示例如下:

        <? php
        $a = true;
        $b = false;
        var_dump($a and$b);  //bool(false)
        var_dump($a or$b);  //bool(true)
        var_dump($a&&$b);  //bool(false)
        var_dump($a||$b);  //bool(true)
        var_dump($a xor$a);  //bool(false)
        var_dump($a xor$b);  //bool(true)
        var_dump(! $a);  //bool(false)
        ?>

5.三元运算符

三元运算符的语法格式为:(expr1) ? (expr2) : (expr3)

当expr1求值结果为true时,上述表达式返回expr2的值,否则返回expr3的值。

可以省略expr2,此时语法格式为:(expr1)? :(expr3)。同样,当expr1求值结果为true时,返回expr1,否则返回expr3。

PHP 7版本多了一个NULL合并运算符??。例如,(expr1) ? ? (expr2),当expr1不为NULL时返回expr1的值,否则返回expr2的值。

示例如下:

        <? php
        $a = (1>2) ? 'big' : 'small';
        $b = (3>2) ? : 'small';
        $c = (1>2) ? : 'big';
        $d = null? ?2;
        $e = 5? ?2;
        var_dump($a);  //string(5) "small"
        var_dump($b);  //bool(true)
        var_dump($c);  //string(3) "big"
        var_dump($d);  //int(2)
        var_dump($e);  //int(5)
        ?>

6.字符串连接运算符

PHP中使用英文字符“.”将两个或多个字符串连接起来,示例如下:

        <? php
        $a='hello';
        $b='world';
        $c=$a .$b;
        echo$C;
        ?>

以上代码的输出结果是:

    hello world

7.赋值运算符

赋值运算符是把基本赋值运算符(“=”)右边的值给左边的变量或常量,如表2-5所示。

表2-5 赋值运算符

8.位运算符

位运算符是指对二进制位从低位到高位对齐后进行运算,如表2-6所示。

表2-6 位运算符

位运算符的使用示例如下:

        <? php
        $a=8;
        $b = 15;
        echo ($a & $b) . "<br/>";
        echo ($a | $b) . "<br/>";
        echo ($a ^ $b) . "<br/>";
        echo (~$b) . "<br/>";
        echo ($a << $b) . "<br/>";
        echo ($a >> $b) . "<br/>";
        ?>

运行结果如下:

          8
          15
          7
          -16
          262144
          0

在PHP 7中,位移负的位置将会产生异常,左位移超出位数会返回0。例如,echo (1 >> -1)程序会报错:Fatal error: Uncaught ArithmeticError: Bit shift by negative number。

代码如下:

        echo (1 >> 2);
        echo "<br/>";
        echo (-1 >> 2);

打印结果为:

          0
          -1