运算符是说明特定操作的符号,是构造 PHP 语言表达式的工具。本节介绍 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)
下面的示例演示了不同算术运算符的使用。
$x=10;
$y=3;
echo ($x + $y);
echo "
";
echo ($x - $y);
echo "
";
echo ($x * $y);
echo "
";
echo ($x / $y);
echo "
";
echo ($x % $y);
echo "
";
echo intdiv(10,3);
?>
执行以上代码输出结果如下:
13
7
30
3.3333333333333
1
3
递增递减运算符
递增递减运算符如表所示。
递增递减运算符
运算符
名称
描述
++x
预递增
x 先加 1,然后返回 x 的值
x++
后递增
先返回 x 的值,x 再加 1
-x
预递减
x 先减 1,然后返回 x 的值
x-
后递减
先返回 x 的值,x 再加 1
递增递减运算符的使用实例:
$x = 2;
echo ++$x; //输出3
$x = 5;
echo $x++; //输出5
$x = 7;
echo --$x; //输出6
$x = 9;
echo $x--; //输出9
?>
执行以上代码在浏览器中的打印结果是:
3569
比较运算符
比较运算符如表所示。
比较运算符
运算符
名称
描述
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
小于
如果 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 新增运算符
比较运算符的使用示例如下:
$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
逻辑运算符的使用示例如下:
$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 的值。示例如下:
$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 中使用英文字符.将两个或多个字符串连接起来。示例如下:
$a = 'hello';
$b = 'world';
$c = $a . $b;
echo $C;
?>
以上代码的输出结果是:
hello world
赋值运算符
赋值运算符是把基本赋值运算符=右边的值给左边的变量或常量,如表所示。
赋值运算符
运算符
实例
展开形式
=
$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<
>>
向右移位
$a>>$b
位运算符的使用示例如下:
$a = 8;
$b = 15;
echo ($a & $b) . "
";
echo ($a | $b) . "
";
echo ($a ^ $b) . "
";
echo (~$b) . "
";
echo ($a << $b) . "
";
echo ($a >> $b) . "
";
?>
运行结果如下:
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 "
";
echo (-1 >> 2);
打印结果为:
0
-1