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 | 逻辑运算符和引用 |
左 | , | 多处用到 |