php运算符
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编程书或者视频教程中经常提到的一个运算符。另外一些不经常被介绍的还有 错误控制运算符、执行运算符、数组运算符、类型运算符等。这些在官网手册上都有相应的介绍 。具体可以参看官方手册。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/php-operators/2968.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.