PHP的运算符号
运算元 运算符 运算元
1 + 1
一元运算符:+1 -1 ++ --
二元运算符:+ - * / % > < = == ===
三元运算符: 1?2:3
算术运算符:+ - * / % ++ --
赋值运算符:= += -= *= /= %=
比较运算符:> < == >= <= === != !==
逻辑运算符:&& || !
位运算符: & | ^ ~ >> <<
其他运算符:?: @ -> =>
算术运算符
++ --
$a++ :先用再加
++$a :先加再用
1.布尔型不参与++运算
2.对于字符串的++就是字符串升序
a++:b
b++:c
逻辑运算符
运算符 |
描述 |
说明 |
and/&& |
逻辑与 |
当两边操作数都为true时,返回true,否则返回false |
or/| | |
逻辑或 |
当两边操作都为false时,返回false,否则返回true |
not/! |
逻辑非 |
当操作为true时返回false,否则返回true |
xor |
逻辑异或 |
当两边操作数只有一个为true时,返回true,否则返回false |
位运算符
1.位,按位运算
运算符 |
描述 |
说明 |
& |
按位与 |
只有参与运算的两位都为1时,运算结果才为1,否则为0 |
| |
按位或 |
只有参与运算的两位都为0时,运算结果才为0,否则为1 |
^ |
按位异或 |
只有参与运算的两位不同,运算结果才为1,否则为0 |
~ |
按位非 |
将二进制表示的操作数中的1变成0,0变成1 |
<< |
左移 |
将左边的操作数在内存中的二进制数据左移右边操作数指定的位数,右边移空的部分补上0 |
>> |
右移 |
将左边的操作数在内存中的二进制数据右移右边操作数指定的位数,左边移空的部分补上0 |
计算例子:
12 & 13
12=8+4
13=8+4+1
00000000 00000000 00000000 00001100
00000000 00000000 00000000 00001101 &
--------------------------
00000000 00000000 00000000 00001100
结果:12
&:经常充当 逻辑与 用,不会短路,让两边都执行
|:经常充当 逻辑或 用,不会短路,让两边都执行
<<:左移一位就是乘2,
>>:右移一位就是除2,
其他运算符
运算符 |
描述 |
示例 |
?: |
三元运算符,可以提供简单的逻辑判断 |
|
`` |
反引号 是执行运算符,php将尝试将反引号中的内容作为外壳命令来执行,并将其输入信息返回 |
$a=ls -al |
@ |
错误控制运算符,当将其放置在一个php表达式之前,该表达式可能产生的任何错误信息都将被忽略掉 |
|
=> |
数组下标指定符号,通过此符号指定数组的键与值 |
|
-> |
对象成员访问符号,访问对象中的成员属性或成员方法 |
|
instanceof |
类型运算符,用来测定一个给定的对象是否来自指定的对象类 |
运算符的优先级和表达式
表达式
- 表达式是PHP的最重要的基石。在PHP中,几乎所写的任何东西都是一个表达式
- 简单但却最精确的定义一个表达式的方式就是“任何有值的东西”
- 最基本的表达式形式就是常量和变量。比如
$a=5
- 稍微复杂的表达式例子就是函数
- 其他还有运算符于操作数构成的也成表达式。如:比较表达式
$a>5,$a==5
运算符优先级
结合方向 |
运算符 |
附加信息 |
非结合 |
new |
new |
左 |
[] |
array() |
非结合 |
++ — |
递增、递减运算符 |
非结合 |
! ~ - (int) (float) (string) (array) (object) @ |
类型 |
左 |
* / % |
算数运算符 |
左 |
+ - . |
算数运算符和字符串运算符 |
左 |
<< >> |
位运算符 |
非结合 |
< <= > >= |
比较运算符 |
非结合 |
== != === !== |
比较运算符 |
左 |
& |
位运算符和引用 |
左 |
^ |
位运算符 |
左 |
|
|
左 |
&& |
逻辑运算符 |
左 |
|
|
左 |
? : |
三元运算符 |
左 |
= += -= *= /= .= %= &= |
= ^= <<= >>= |
左 |
and |
逻辑运算符 |
左 |
xor |
逻辑运算符 |
左 |
or |
逻辑运算符和引用 |
左 |
, |
多处用到 |