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