运算符是说明特定操作的符号,是构造 PHP 语言表达式的工具。本节介绍 PHP 语言常用的运算符及其使用。
算术运算符可以对整型和浮点型的数据进行运算。PHP 中的算术运算符如表所示。
运算符 | 名称 | 描述 | 实例 |
---|---|---|---|
x+y | 加 | x 和 y 的和 | 1+2 |
x-y | 减 | x 和 y 的差 | 2-1 |
x*y | 乘 | x 和 y 的积 | 2*3 |
x/y | 除 | x 除以 y 的商 | 4/2 |
x%y | 取模(除法的余数) | x 除以 y 的余数 | 5%2 |
-x | 取反 | x 取反 | -3 |
intdiv(x,y) | 整除 | x 除以 y 的商的整数部分,此为 PHP 7 新增运算符 | intdiv(10,3) |
下面的示例演示了不同算术运算符的使用。
- <?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);
- ?>
执行以上代码输出结果如下:
递增递减运算符如表所示。
运算符 | 名称 | 描述 |
---|---|---|
++x | 预递增 | x 先加 1,然后返回 x 的值 |
x++ | 后递增 | 先返回 x 的值,x 再加 1 |
-x | 预递减 | x 先减 1,然后返回 x 的值 |
x- | 后递减 | 先返回 x 的值,x 再加 1 |
递增递减运算符的使用实例:
- <?php
- $x = 2;
- echo ++$x; //输出3
- $x = 5;
- echo $x++; //输出5
- $x = 7;
- echo --$x; //输出6
- $x = 9;
- echo $x--; //输出9
- ?>
执行以上代码在浏览器中的打印结果是:
比较运算符如表所示。
运算符 | 名称 | 描述 |
---|---|---|
x==y | 等于 | 如果 x 等于 y,返回 true,否则返回 false |
x===y | 恒等于 | 如果 x 恒等于 y,且两者数据类型相同,返回 true,否则返回 false |
x!=y | 不等于 | 如果 x 不等于 y,返回 true,否则返回 false |
x<>y | 不等于 | 如果 x 不等于 y,返回 true,否则返回 false |
x!==y | 不恒等于 | 如果 x 不等于 y,或两者类型不同,返回 true,否则返回 false |
x>y | 大于 | 如果 x 大于 y,返回 true,否则返回 false |
x<y | 小于 | 如果 x 小于 y,返回 true,否则返回 false |
x>=y | 大于等于 | 如果 x 大于等于 y,返回 true,否则返回 false |
x<=y | 小于等于 | 如果 x 小于等于 y,返回 true,否则返回 false |
x<=>y | 组合比较符 | 如果 x 的值和 y 的值相等(不是恒等于),就返回 0;如果 x 的值大于 y 的值,就返回 1;如果 x 的值小于 y 的值,就返回 -1。此为 PHP 7 新增运算符 |
比较运算符的使用示例如下:
- <?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)
- ?>
逻辑运算符如表所示。
运算符 | 名称 | 描述 |
---|---|---|
a and b | 与 | 只有 a 和 b 都为 true 才返回 true |
x or y | 或 | a 和 b 至少一个为 true 才返回 true |
a xor b | 异或 | a 和 b 仅有一个为 true 就返回 true |
a && b | 与 | a 和 b 都为 true 才返回 true |
a || b | 或 | a 和 b 至少一个为 true 就返回 true |
!a | 非 | 当 a 为 true 时返回 false,a 为 false 时返回 true |
逻辑运算符的使用示例如下:
- <?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 求值结果为 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;
- ?>
以上代码的输出结果是:
赋值运算符是把基本赋值运算符=右边的值给左边的变量或常量,如表所示。
运算符 | 实例 | 展开形式 |
---|---|---|
= | $a='b' | $a='b' |
+= | $a+=5 | $a=$a+5 |
-= | $a-=5 | $a=$a-5 |
*= | $a*=5 | $a=$a*5 |
/= | $a/=5 | $a=$a/5 |
.= | $a.=5 | $a=$a.5 |
%= | $a%=5 | $a=$a%5 |
位运算符是指对二进制位从低位到高位对齐后进行运算,如表所示。
运算符 | 作用 | 实例 |
---|---|---|
& | 按位与 | $a&$b |
| | 按位或 | $a|$b |
^ | 按位异或 | $a^$b |
~ | 按位取反 | ~$b |
<< | 向左移位 | $a<<$b |
>> | 向右移位 | $a>>$b |
位运算符的使用示例如下:
- <?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/>";
- ?>
运行结果如下:
在 PHP 7 中,位移负的位置将会产生异常,左位移超出位数会返回 0。例如,echo(1>>-1) 程序会报错:Fatal error:Uncaught ArithmeticError:Bit shift by negative number。
代码如下:
- echo (1 >> 2);
- echo "<br/>";
- echo (-1 >> 2);
打印结果为: