第十三课:运算符
在第九课我们学过了 PHP中的运算,学习中碰到的问题大家讨论热烈,特别是rq2004提出的“echo "a".$a+$b."a".($a+$b)+$a;”PHP会怎么计算的问题,以前学习PHP的人从来没有谁认真考虑过这样的事。虽然这样的运算在实际编程中不常用到,但是我们会员的这种学术精神可圈可点。随后的学习过程中大家要求掌握更多的相关知识,所以这一课我们更进一步探讨PHP中的运算符,让你掌握更多的运算知识。
1。赋值运算符
基本的赋值运算符是“=”。如果你认为这是一个等号,那就错了。它实际的意思是左边的操作数得到右边表达式的值。例如你可以用下面的方式做一些复杂的事情。例如13-1:
$a = ( $b=4 ) + 5; // 现在$a等于9,$b等于4 。
除了基本的赋值运算符外,还有“复合运算符”。对于所有二进制数和字符串,允许对变量进行自我复合运算。例如13-2:








2。比较运算符
比较运算符,如同它们名称所暗示的,允许对两个值进行比较。
表格: 比较运算符
$a == $b | 等于 | TRUE,如果 $a 等于 $b。 |
$a === $b | 全等 | TRUE,如果 $a 等于 $b,并且它们的类型也相同。(PHP 4 引进) |
$a != $b | 不等 | TRUE,如果 $a 不等于 $b。 |
$a <> $b | 不等 | TRUE,如果 $a 不等于 $b。 |
$a !== $b | 非全等 | TRUE,如果 $a 不等于 $b,或者它们的类型不同。(PHP 4 引进) |
$a < $b | 小与 | TRUE,如果 $a 严格小于 $b。 |
$a > $b | 大于 | TRUE,如果 $a 严格 $b。 |
$a <= $b | 小于等于 | TRUE,如果 $a 小于或者等于 $b。 |
$a >= $b | 大于等于 | TRUE,如果 $a 大于或者等于 $b。 |
如果比较一个整数和字符串,则字符串会被转换为整数。如果比较两个数字字符串,则作为整数比较。
例如13-3:









表格: 逻辑运算符
$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。 |
“与”和“或”有两种不同形式运算符的原因是它们运算的优先级不同。
例子13-4:



















请看表达式: ( expr1 ) ? ( expr2 ) : ( expr3 );
若expr1运算结果为真(TRUE),则执行expr2,否则执行expr3。实际上它有点类似于if...else,但可以让程序更精简有效。例如13-6:


















5。运算符优先级
运算符优先级指定了两个表达式绑定得有多“紧密”。例如,表达式 1 + 5 * 3 的结果是 16 而不是 18 是因为乘号(“*”)的优先级比加号(“+”)高。必要时可以用括号来强制改变优先级。例如:(1 + 5) * 3 的值为 18。如果运算符优先级相同,则使用从左到右的左联顺序。
下表从高到低列出了运算符的优先级。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序
表格: 运算符优先级
非结合 | new | new |
左 | [ | array() |
非结合 | ++ -- | 递增/递减运算符 |
非结合 | ! ~ - (int) (float) (string) (array) (object) @ | 类型 |
左 | * / % | 算数运算符 |
左 | + - . | 算数运算符和字符串运算符 |
左 | << >> | 位运算符 |
非结合 | < <= > >= | 比较运算符 |
非结合 | == != === !== | 比较运算符 |
左 | & | 位运算符和引用 |
左 | ^ | 位运算符 |
左 | | | 位运算符 |
左 | && | 逻辑运算符 |
左 | || | 逻辑运算符 |
左 | ? : | 三元运算符 |
右 | = += -= *= /= .= %= &= |= ^= <<= >>= | 赋值运算符 |
左 | and | 逻辑运算符 |
左 | xor | 逻辑运算符 |
左 | or | 逻辑运算符 |
左 | , | 多处用到 |
6。错误控制运算符
PHP 支持一个错误控制运算符:@。当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。例如13-7:






PHP中还有执行运算符和位运算符,本课中讲述它们可能你接受起来有点难度,如果你想掌握它们可以看PHP手册和相关资料。好了,本课就讲到这里,好好练习吧。