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 | 无结合 | clone 、new | 对象复制、创建对象 |
2 | 从右向左 | ** | 幂运算符(PHP 5.6+) |
3 | 从右向左 | ++ 、-- 、~ 、(int) |