php运算符根据细分的情况分类也不同。这里将平时公认的几种做个介绍,即:算术运算符、赋值运算符、逻辑运算符、三目运算符和位运算符。各种运算符根据情况的不同又有优先级的高低、结合方向的开概念。本文就主要以列表的方式做一个总结。

一、算术运算符

算术运算符即我们平时说的加、减、乘、除、求余、自增、自减。具体可以以看下面的列表:

运算符 说明 例子 结果
+ Addition x=2 x+2 4
Subtraction x=2 5-x 3
* Multiplication x=4 x*5 20
/ Division 15/5 5/2 32.5
% Modulus (division remainder) 5%2 10%8 10%2 12
++ Increment x=5 x++ x=6
Decrement x=5 x– x=4

二、赋值运算符

赋值运算符就是以“=”号进行连接的的两个表达式 ,但其不是“等于” ,而是把右边表达式的值赋给左边的表达式或变量等。

运算符 说明 例子
= x=y x=y
+= x+=y x=x+y
-= x-=y x=x-y
*= x*=y x=x*y
/= x/=y x=x/y
.= x.=y x=x.y
%= x%=y x=x%y

三、比较运算符

就是我们平时所说的等于,不等于,大于,小于等 。

运算符 说明 例子
is equal to 58 returns false
!= is not equal 5!=8 returns true
> is greater than 5>8 returns false
< is less than 5<8 returns true
>= is greater than or equal to 5>=8 returns false
<= is less than or equal to 5<=8 returns true

四、逻辑运算符

PHP 中的逻辑运算符有与、或、异或、非 4 种。其中的逻辑与和逻辑或有两种表现形式。

运算符 说明 例子
&& and x=6 y=3 (x && 1) returns true
|| or x=6 y=3 (x= =5 || y= =5) returns false
! not x=6y=3!(x= =y) returns true

这个表列的并不全,不过看起来比较清清晰,我们再看下官方提供的一个列表:

例子 名称 结果
$a and $b And(逻辑与) TRUE,如果 $a 和 $b 都为 TRUE。
$a or $b Or(逻辑或) TRUE,如果 $a 或 $b 任一为 TRUE。
$a xor $b Xor(逻辑异或) TRUE,如果 $a 或 $b 任一为 TRUE,但不同时是。
! $a Not(逻辑非) TRUE,如果 $a 不为 TRUE。
$a && $b And(逻辑与) TRUE,如果 $a 和 $b 都为 TRUE。
$a || $b Or(逻辑或) TRUE,如果 $a 或 $b 任一为 TRUE。

五、三目运算符

(expr1)?(expr2):(expr3):其中的 Expr1、Expr2 及 Expr3 均为表达式。当表达式 Expr1 为真时则执行后边的 Expr2,反之则 执行 Expr3。从分析中不难看出,三目运算符“?:”实际上也就是 if…else 的简化版。

六、位运算符

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

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

七、运算符的结合方向与优先级

运算符优先级指定了两个表达式绑定得有多“紧密”。例如,表达式 1 + 5 * 3 的结果是 16 而不是 18 是因为乘号(“*”)的优先级比加号(“+”)高。必要时可以用括号来强制改变优先级。例如:(1 + 5) * 3 的值为 18。

如果运算符优先级相同,其结合方向决定着应该从右向左求值,还是从左向右求值——见下例。 下表按照优先级从高到低列出了运算符。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。

结合方向 运算符 附加信息
clone new clone 和 new
[ array()
++ — ~ (int) (float) (string) (array) (object) (bool) @ 类型和递增/递减
instanceof 类型
! 逻辑运算符
* / % 算术运算符
+ – . 算术运算符和字符串运算符
> 位运算符
!= = ! <> 比较运算符
& 位运算符和引用
^ 位运算符
| 位运算符
&& 逻辑运算符
| | 逻辑运算符
? : 三元运算符
= += -= *= /= .= %= &= = ^= >= => | 赋值运算符
and 逻辑运算符
xor 逻辑运算符
or 逻辑运算符
, 多处用到

注:虽然有优先级的分类,为了增加程序的可读性,往往还是需要通过增加括号的方式进行划分。

八、总结

以上只是列出的很多php编程书或者视频教程中经常提到的一个运算符。另外一些不经常被介绍的还有 错误控制运算符、执行运算符、数组运算符、类型运算符等。这些在官网手册上都有相应的介绍 。具体可以参看官方手册。