运算符是说明特定操作的符号,是构造PHP语言表达式的工具。本节介绍PHP语言常用的运算符及其使用。
算术运算符可以对整型和浮点型的数据进行运算。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 递增递减运算符
递增递减运算符的使用实例:
<?php $x = 2; echo ++$x; //输出3 $x = 5; echo $x++; //输出5 $x = 7; echo --$x; //输出6 $x = 9; echo $x--; //输出9 ?>
执行以上代码在浏览器中的打印结果是:
3569
比较运算符如表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) ?>
逻辑运算符如表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) ?>
三元运算符的语法格式为:(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 = null2; $e = 52; 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) ?>
PHP中使用英文字符“.”将两个或多个字符串连接起来。示例如下:
<?php $a = 'hello'; $b = 'world'; $c = $a . $b; echo $C; ?>
以上代码的输出结果是:
hello world
赋值运算符是把基本赋值运算符(“=”)右边的值给左边的变量或常量,如表2-5所示。
表2-5 赋值运算符
位运算符是指对二进制位从低位到高位对齐后进行运算,如表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