On this page

PHP 运算符

运算符

目录

  • 运算符优先级
  • 算术运算符
  • 赋值运算符
  • 位运算符
  • 比较运算符
  • 错误控制运算符
  • 执行运算符
  • 递增/递减运算符
  • 逻辑运算符
  • 字符串运算符
  • 数组运算符
  • 类型运算符

运算符是可以通过给出的一或多个值(用编程行话来说,表达式)来产生另一个值(因而整个结构成为一个表达式)的东西。

运算符可按照其能接受几个值来分组。一元运算符只能接受一个值,例如 !(逻辑取反运算符)或 ++(递增运算符)。 二元运算符可接受两个值,例如熟悉的算术运算符 +(加)和 -(减),大多数 PHP 运算符都是这种。最后是唯一的三元运算符 ? :,可接受三个值;通常就简单称之为“三元运算符”(尽管称之为条件运算符可能更合适)。


运算符优先级

结合方向运算符附加信息
不适用clone
new
clonenew
**算术运算符
不适用+
-
++
--
~
(int)
(float)
(string)
(array)
(object)
(bool)
@
算术 (一元 +-),
递增/递减
按位
类型转换
错误控制
instanceof类型
不适用!逻辑运算符
*
/
%
算术运算符
+
-
.
算数 (二元 +-),
array
string. PHP 8.0.0 前可用)
<<
>>
位运算符
.string (PHP 8.0.0 起可用)
<
<=
>
>=
比较运算符
==
!=
===
!==
<>
<=>
比较运算符
&位运算符引用
^位运算符
\|位运算符
&&逻辑运算符
\|\|逻辑运算符
??null 合并运算符
无关联? :三元运算符
(PHP 8.0.0 之前左联)
= += -= *= **= /= .= %= &= |= ^= <<= >>= ??=赋值运算符
不适用yield fromyield from
不适用yieldyield
不适用printprint
and逻辑运算符
xor逻辑运算符
or逻辑运算符

算术运算符

还记得学校里学到的基本数学知识吗?就和它们一样。

算术运算符

例子名称结果
+$a标识根据情况将 $a 转化为 int 或
float。
-$a取反$a 的负值。
$a + $b加法$a 和 $b 的和。
$a - $b减法$a 和 $b 的差。
$a * $b乘法$a 和 $b 的积。
$a / $b除法$a 除以 $b 的商。
$a % $b取模$a 除以 $b 的余数。
$a ** $b求幂$a 的 $b次方的值。

赋值运算符

基本的赋值运算符是“=”。一开始可能会以为它是“等于”,其实不是的。它实际上意味着把右边表达式的值赋给左边的运算数。

引用赋值

PHP 支持引用赋值,使用“$var = &$othervar;”语法。引用赋值意味着两个变量指向了同一个数据,没有拷贝任何东西。


算术赋值运算符

例子等同于操作
$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取模
$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左移
$a >>= $b$a = $a >> $b右移

其他赋值运算符

例子等同于操作
$a .= $b$a = $a . $b字符串拼接
$a ??= $b$a = $a ?? $bNULL 合并

位运算符

位运算符允许对整型数中指定的位进行求值和操作。

位运算符

例子名称结果
$a & $bAnd(按位与)将把 $a 和 $b 中都为 1 的位设为 1。
$a \| $bOr(按位或)将把 $a 和 $b 中任何一个为 1 的位设为 1。
$a ^ $bXor(按位异或)将把 $a 和 $b 中一个为 1 另一个为 0 的位设为 1。
~ $aNot(按位取反)将 $a 中为 0 的位设为 1,反之亦然。
$a << $bShift left(左移)将 $a 中的位向左移动 $b 次(每一次移动都表示“乘以 2”)。
$a >> $bShift right(右移)将 $a 中的位向右移动 $b 次(每一次移动都表示“除以 2”)。

比较运算符

比较运算符,如同它们名称所暗示的,允许对两个值进行比较。还可以参考 PHP 类型比较表看不同类型相互比较的例子。

比较运算符

例子名称结果
$a == $b等于true,如果类型转换后 $a 等于 $b。
$a === $b全等true,如果 $a 等于 $b,并且它们的类型也相同。
$a != $b不等true,如果类型转换后 $a 不等于 $b。
$a <> $b不等true,如果类型转换后 $a 不等于 $b。
$a !== $b不全等true,如果 $a 不等于 $b,或者它们的类型不同。
$a < $b小与true,如果 $a 严格小于 $b。
$a > $b大于true,如果 $a 严格大于 $b。
$a <= $b小于等于true,如果 $a 小于或者等于 $b。
$a >= $b大于等于true,如果 $a 大于或者等于 $b。
$a <=> $b太空船运算符(组合比较符)当$a小于、等于、大于 $b时
分别返回一个小于、等于、大于0的 int 值。

错误控制运算符

PHP 支持一个错误控制运算符:@。当将其放置在一个 PHP表达式之前,该表达式可能产生的任何错误诊断都被抑制。

执行运算符

PHP 支持一个执行运算符:反引号(``)。注意这不是单引号!PHP将尝试将反引号中的内容作为 shell 命令来执行,并将其输出信息返回(即,可以赋给一个变量而不是简单地丢弃到标准输出)。使用反引号运算符“`”的效果与函数shell_exec() 相同。


递增/递减运算符

PHP 支持 C 风格的前/后递增与递减运算符。

注意: 递增/递减运算符不影响布尔值。递减 null 值也没有效果,但是递增 null 的结果是 1

递增/递减运算符

例子名称效果
++$a前加$a 的值加一,然后返回 $a。
$a++后加返回 $a,然后将 $a 的值加一。
--$a前减$a 的值减一, 然后返回 $a。
$a--后减返回 $a,然后将 $a 的值减一。

逻辑运算符

逻辑运算符

例子名称结果
$a and $bAnd(逻辑与)true,如果 $a 和 $b 都为 true
$a or $bOr(逻辑或)true,如果 $a 或 $b 任一为 true
$a xor $bXor(逻辑异或)true,如果 $a 或 $b 任一为 true,但不同时是。
! $aNot(逻辑非)true,如果 $a 不为 true
$a && $bAnd(逻辑与)true,如果 $a 和 $b 都为 true
$a || $bOr(逻辑或)true,如果 $a 或 $b 任一为 true

字符串运算符

有两个字符串(string)运算符。第一个是连接运算符(“.”),它返回其左右参数连接后的字符串。第二个是连接赋值运算符(“.=”),它将右边参数附加到左边的参数之后。更多信息见赋值运算符


数组运算符

数组运算符

例子名称结果
$a + $b联合$a 和 $b 的联合。
$a == $b相等如果 $a 和 $b 具有相同的键/值对则为 true
$a === $b全等如果 $a 和 $b 具有相同的键/值对并且顺序和类型都相同则为 true
$a != $b不等如果 $a 不等于 $b 则为 true
$a <> $b不等如果 $a 不等于 $b 则为 true
$a !== $b不全等如果 $a 不全等于 $b 则为 true

类型运算符

instanceof 用于确定一个 PHP 变量是否属于某一类 class 的实例: