章 10. 运算符
- 目录
- 运算符优先级
- 算术运算符
- 赋值运算符
- 位运算符
- 比较运算符
- 错误控制运算符
- 执行运算符
- 加一/减一运算符
- 逻辑运算符
- 字符串运算符
- 数组运算符
运算符优先级
运算符优先级指定了两个表达式绑定得有多“紧密”。例如,表达式 1 + 5 * 3 的结果是 16 而不是 18 是因为乘号(“*”)的优先级比加号(“+”)高。必要时可以用括号来强制改变优先级。例如:(1 + 5) * 3 的值为 18。
下表从低到高列出了运算符的优先级。
表格 10-1. 运算符优先级
结合方向 | 运算符 |
---|---|
左 | , |
左 | or |
左 | xor |
左 | and |
右 | |
右 | = += -= *= /= .= %= &= |= ^= ~= <<= >>= |
左 | ? : |
左 | || |
左 | && |
左 | | |
左 | ^ |
左 | & |
无 | == != === !== |
无 | < <= > >= |
左 | << >> |
左 | + - . |
左 | * / % |
右 | ! ~ ++ -- (int) (float) (string) (array) (object) @ |
右 | [ |
无 | new |
注: 尽管 ! 比 = 的优先级高,PHP 仍旧允许类似如下的表达式:if (!$a = foo()),在此例中 foo() 的输出被赋给了 $a。
表格 10-2. 算术运算符
例子 | 名称 | 结果 |
---|---|---|
$a + $b | 加法 | $a 和 $b 的和。 |
$a - $b | 减法 | $a 和 $b 的差。 |
$a * $b | 乘法 | $a 和 $b 的积。 |
$a / $b | 除法 | $a 除以 $b 的商。 |
$a % $b | 取模 | $a 除以 $b 的余数。 |
除号(“/”)总是返回浮点数,即使两个运算数是整数(或由字符串转换成的整数)也是这样。
表格 10-6. 逻辑运算符
例子 | 名称 | 结果 |
---|---|---|
$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。 |
“与”和“或”有两种不同形式运算符的原因是它们操作的优先级不同。(见运算符优先级。)
PHP字符串运算符
有两个字符串运算符。第一个是连接运算符(“.”),它返回其左右参数连接后的字符串。第二个是连接赋值运算符(“.=”),它将右边参数附加到左边的参数后。更多信息见赋值运算符。
$a = "Hello "; |
请参阅手册中“字符串类型”和“字符串函数”的有关章节。
PHP 数组运算符
PHP 仅有的一个数组运算符是 + 运算符。它把右边的数组附加到左边的数组后,但是重复的键值不会被覆盖。
$a = array("a" => "apple", "b" => "banana"); |
执行后,此脚本会显示:
array(3) { |
请参阅手册中“数组类型”和“数组函数”的有关章节。
会员登录关闭
注册会员关闭