跳到主要内容

PHP 运算符

运算符(Operator)是 PHP 中用于执行操作和计算的基本工具。它们可以分为算术运算符、赋值运算符、递增/递减运算符、比较运算符、逻辑运算符、数组运算符、三元运算符和错误控制运算符。你可以将运算符看作连接变量和数值的桥梁。掌握运算符是写出逻辑严密、功能丰富 PHP 程序的关键一步。

下面逐一讲解 PHP 的各类运算符,并给出运算符优先级列表。

算术运算符

算术运算符(Arithmetic Operators)用于进行常见的数学运算。

运算符描述示例
+加法$a + $b
-减法$a - $b
*乘法$a * $b
/除法$a / $b
%取余数$a % $b

示例:

<?php
$a = 10;
$b = 3;
echo $a + $b; // 输出 13
echo $a % $b; // 输出 1
?>

赋值运算符

赋值运算符(Assignment Operators)用于将值赋给变量。

运算符示例等价于
=$a = $b直接赋值
+=$a += $b$a = $a + $b
-=$a -= $b$a = $a - $b
*=$a *= $b$a = $a * $b
/=$a /= $b$a = $a / $b
%=$a %= $b$a = $a % $b

示例:

<?php
$a = 5;
$a += 3;
echo $a; // 输出 8
?>

比较运算符

比较运算符(Comparison Operators)用于判断两个值之间的关系,结果返回布尔值(true 或 false)。

运算符描述示例
==等于(只比较值)$a == $b
===全等(值和类型都相等)$a === $b
!=不等$a != $b
<>不等(同 !=$a <> $b
!==不全等$a !== $b
>大于$a > $b
<小于$a < $b
>=大于或等于$a >= $b
<=小于或等于$a <= $b

示例:

<?php
$a = 10;
$b = "10";
var_dump($a == $b); // true
var_dump($a === $b); // false(类型不同)
?>

递增 / 递减运算符

递增 / 递减运算符(Increment / Decrement Operators)用于对变量进行自增或自减操作。

运算符描述示例
++$a前置递增先加一,再使用
$a++后置递增先使用,再加一
--$a前置递减先减一,再使用
$a--后置递减先使用,再减一

示例:

<?php
$a = 5;
echo ++$a; // 输出 6
echo $a--; // 输出 6,再减一
echo $a; // 输出 5
?>

逻辑运算符

逻辑运算符(Logical Operators)用于处理布尔逻辑,常用于条件判断中。

运算符描述示例
and与(都为 true 才为 true)$a and $b
or或(任意为 true 即为 true)$a or $b
xor异或(仅一个为 true)$a xor $b
&&与(优先级更高)$a && $b
||$a || $b
!非(取反)!$a

示例:

<?php
$a = true;
$b = false;
var_dump($a && $b); // false
var_dump($a || $b); // true
?>

字符串运算符

PHP 中有以下两种字符串运算符(String Operators)。

运算符描述示例
.连接字符串$txt1 . $txt2
.=拼接并赋值$txt1 .= $txt2

示例:

<?php
$txt1 = "Hello ";
$txt2 = "World!";
echo $txt1 . $txt2; // Hello World!
?>

数组运算符

数组运算符(Array Operators)用于比较数组。

运算符描述示例
+联合(合并数组)$a + $b
==相等(键值都相等,顺序无关)$a == $b
===全等(键值和顺序都一致)$a === $b
!=不相等$a != $b
<>不相等$a <> $b
!==不全等$a !== $b

示例:

<?php
$a = array("a" => "red", "b" => "green");
$b = array("c" => "blue", "d" => "yellow");
print_r($a + $b); // 合并两个数组
?>

条件运算符(三元运算符)

条件运算符(? :)又称三元运算符,它可以提供更简洁的条件判断方式。语法格式如下:

(expr1) ? (expr2) : (expr3)

expr1 表达式为 TRUE 时,语句的值为 expr2,否则为 expr3

示例:

<?php
$age = 20;
echo ($age >= 18) ? "成人" : "未成年";
?>

Null 合并运算符

Null 合并运算符(??)是 PHP 7+ 新增的特性,用于判断变量是否存在并非 null,常用于设置默认值。

<?php
$name = $_GET["name"] ?? "游客";
echo $name;
?>

相当于:

<?php
$name = isset($_GET["name"]) ? $_GET["name"] : "游客";
?>

运算符优先级

下面是按照优先级从高到低整理的 PHP 运算符优先级表。

优先级结合方向运算符描述
1无结合clonenew对象复制、创建对象
2从右向左**幂运算符(PHP 5.6+)
3从右向左++--~(int)(float)(string)(array)(object)(bool)@一元运算符、类型转换、错误控制
4无结合instanceof类型
5从右向左!逻辑运算符
6从左向右*/%乘、除、取余
7从左向右+-.加、减、字符串连接
8从左向右<<>>位运算符
9无结合<<=>>=比较运算符
10无结合==!====!==<><=>比较运算符
11从左向右&位运算符和引用
12从左向右^位运算符
13从左向右|位运算符
14从左向右&&逻辑运算符
15从左向右||逻辑运算符
16从右向左??null 合并运算符
17从左向右? :三元运算符
18从右向左=+=-=*=**=/=.=%=&=|=^=<<=>>=赋值运算符
19从左向右and逻辑运算符
20从左向右xor逻辑运算符
21从左向右or逻辑运算符

小结

PHP 中的运算符功能丰富,涵盖了算术、赋值、比较、逻辑、字符串、数组等各个方面。掌握这些运算符能帮助你更高效地处理变量和数据结构,同时让条件判断、表达式写得更简洁。建议你多动手实践每种类型的运算符,这样理解会更深刻,也更容易在实战中灵活运用。