【运算符优先级】
结合方向 | 运算符 | 附加信息 |
无 | clone new | clone 和 new |
左 | [ | array() |
右 | ++ -- ~ (int) (float) (string) (array) (object) (bool) @ | 类型和递增/递减 |
无 | instanceof | 类型 |
右 | ! | 逻辑运算符 |
左 | * / % | 算术运算符 |
左 | + - . | 算术运算符和字符串运算符 |
左 | << >> | 位运算符 |
无 | == != === !== <> | 比较运算符 |
左 | & | 位运算符和引用 |
左 | ^ | 位运算符 |
左 | | | 位运算符 |
左 | && | 逻辑运算符 |
左 | || | 逻辑运算符 |
左 | ? : | 三元运算符 |
右 | = += -= *= /= .= %= &= |= ^= <<= >>= => | 赋值运算符 |
左 | and | 逻辑运算符 |
左 | xor | 逻辑运算符 |
左 | or | 逻辑运算符 |
左 | , | 多处用到 |
取模运算符 % 的结果和被除数的符号(正负号)相同。即 $a % $b 的结果和 $a 的符号相同。
【位运算符】
例子 | 名称 | 结果 |
| And(按位与) | 将把 $a 和 $b 中都为 1 的位设为 1。 |
| Or(按位或) | 将把 $a 和 $b 中任何一个为 1 的位设为 1。 |
| Xor(按位异或) | 将把 $a 和 $b 中一个为 1 另一个为 0 的位设为 1。 |
| Not(按位取反) | 将 $a 中为 0 的位设为 1,反之亦然。 |
| Shift left(左移) | 将 $a 中的位向左移动 $b 次(每一次移动都表示"乘以 2")。 |
| Shift right(右移) | 将 $a 中的位向右移动 $b 次(每一次移动都表示"除以 2")。 |
【比较运算符】
例子 | 名称 | 结果 |
$a == $b | 等于 | |
$a === $b | 全等 | |
$a != $b | 不等 | |
$a <> $b | 不等 | |
$a !== $b | 不全等 | |
$a < $b | 小与 | |
$a > $b | 大于 | |
$a <= $b | 小于等于 | |
$a >= $b | 大于等于 | |
运算数 1 类型 | 运算数 2 类型 | 结果 |
null 或string | string | 将 |
bool 或null | 任何其它类型 | 转换为 bool, |
object | object | 内置类可以定义自己的比较,不同类不能比较,相同类和数组同样方式比较属性(PHP 4 中),PHP 5 有其自己的说明 |
string,resource 或number | string,resource 或number | 将字符串和资源转换成数字,按普通数学比较 |
array | array | 具有较少成员的数组较小,如果运算数 1 中的键不存在于运算数 2 中则数组无法比较,否则挨个值比较(见下例) |
object | 任何其它类型 | object 总是更大 |
array | 任何其它类型 | array 总是更大 |
注意三元运算符是个语句,因此其求值不是变量,而是语句的结果。如果想通过引用返回一个变量这点就很重要。在一个通过引用返回的函数中语句 return $var == 42 ? $a : $b; 将不起作用,以后的 PHP 版本会为此发出一条警告。
【递增递减】
例子 | 名称 | 效果 |
++$a | 前加 | $a 的值加一,然后返回 $a。 |
$a++ | 后加 | 返回 $a,然后将 $a 的值加一。 |
--$a | 前减 | $a 的值减一, 然后返回 $a。 |
$a-- | 后减 | 返回 $a,然后将 $a 的值减一。 |
$a = 'Z'; $a++; 将把 $a 变成'AA',而在 C 中,a = 'Z'; a++; 将把 a 变成 '['('Z' 的 ASCII 值是 90,'[' 的 ASCII 值是 91)。注意字符变量只能递增,不能递减,并且只支持纯字母(a-z 和 A-Z)。递增/递减其他字符变量则无效,原字符串没有变化。
【逻辑运算符】
例子 | 名称 | 结果 |
$a and $b | And(逻辑与) | |
$a or $b | Or(逻辑或) | |
$a xor $b | Xor(逻辑异或) | |
! $a | Not(逻辑非) | |
$a && $b | And(逻辑与) | |
$a || $b | Or(逻辑或) | |
【字符串运算符】
有两个字符串(string)运算符。第一个是连接运算符("."),它返回其左右参数连接后的字符串。第二个是连接赋值运算符(".="),它将右边参数附加到左边的参数之后。
【类型运算符】
instanceof 用于确定一个 PHP 变量是否属于某一类 class 的实例,或者使用 instanceof 检查对象不是某个类的实例。然而 instanceof 的使用还有一些陷阱必须了解。在 PHP 5.1.0 之前,如果要检查的类名称不存在,instanceof 会调用 __autoload()。另外,如果该类没有被装载则会产生一个致命错误。可以通过使用动态类引用或用一个包含类名的字符串变量来避开这种问题。
http://php.net/manual/zh/types.comparisons.php