PHP中的运算符

理解PHP运算符:优先级与应用
本文详细解析PHP中的运算符,包括算术、赋值、位、比较、错误抑制、执行、递增递减及逻辑运算符,以及字符串、数组与类运算符的应用与优先级规则。
在表达式中,哪个运算符的优先级越高,就先执行哪种运算,相同优先级的运算符,按照从左到右的顺序来执行。可以通过括号来强制改变优先级。

1. 算术运算符
+ -  *  / %

取模运算符 % 两侧的操作数,在运算之前都会转换成整数(直接除去小数部分)。

取模运算的结果和被除数的符号(正负号)相同。即 $a % $b 的结果和 $a 的符号相同。

2. 赋值运算符
=

3. 位运算符
& | ^ ~ << >>

4. 比较运算符
<:小于
>:大于
<=:小于等于
>=:大于等于
==:等于,只要值相等,就为true。 如:var_dump('a'==0);
===:全等于,只有值相等且类型相同,才为true。 如:var_dump(0===0);
!=:不等于,只要值不相等,就为true。
<>:不等于,只要值不相等,就为true。
!==:不全等于,值不相等或者类型不同时,就为true。

PHP中,值的比较,遵循以下规则:
如果比较运算符的两侧分别是字符串和数字,则会把字符串转换为数值后,再来比较值。
如果比较运算符的一侧有布尔值,则会把另一侧的值也转换为布尔值,再来比较值。

5. 错误抑制运算符
@

6. 执行运算符
``
7. 递增递减运算符
++ --
PHP支持C语言风格的,前置或后置递增、递减运算
前置和后置的区别:
++$a :前置。$a 的值先加1,然后返回加1后的结果
$a++:后置。先返回 $a,然后将 $a 的值加1。

8. 逻辑运算符
and:逻辑与,$a and $b,只有当 $a 和 $b 都为true时,结果才为true。
or:逻辑或,$a or $b,当 $a 或 $b 中任一一个为true时,结果就为true。
xor:逻辑异或,$a xor $b,只有当 $a 和 $b 不同(一真一假)时,结果才为true。
!:逻辑非,! $a,取反,只有当 $a 为false时,结果才为true。
&&:逻辑与,功能同and,但优先级不同。
||:逻辑或,功能同or,但优先级不同

注意:逻辑运算符中容易出现短路的问题,前一个表达式的结果明确后,通过它如果可以明确整个运算表达式的结果(true或false)时,后面的表达式将不会执行。

9. 字符串运算符
.:字符串连接运算符(.)。
也可以使用连接赋值运算符(.=),如:
$a = 'hello';
$a .= 'world';   // 相当于 $a = $a . 'world';
类似的,算术运算符(+ -  *  / %),也有这样的写法

10. 数组运算符
假设 $a 和 $b 是两个数组
$a + $b:联合,$a 和 $b 的联合集合,把右边的数组元素附加到左边的数组后面,两个数组中相同的键名,则只用左边数组中的,右边的被忽略。这和array_merge()的作用不同。
$a == $b:相等,如果 $a 和 $b 具有相同的键值对,结果就为true。
$a === $b:全等,如果 $a 和 $b 具有相同的键值对,且顺序和类型都相同,结果才为true。
$a != $b:不等
$a <> $b:不等
$a !== $b:不全等

11. 类运算符
instanceof:用于确定一个变量是否属于某个类的实例。
<?php 
class MyClass {

};
$a = new MyClass();
$b = new MyClass();
$c = 'MyClass';
var_dump($a instanceof MyClass);
var_dump($a instanceof $b);
var_dump($a instanceof $c);
?>
上面三种情况,都是true。
此外,如果 MyClass 继承了某个父类,或实现(implements)了某个接口(interface),instanceof 后面的参数改为父类名或接口名时,其结果也是true。

12. 三元运算符(? : )
$a = $b ? $b : 0;
三元运算符的优先级高于赋值运算符,上述三元运算的含义是:如果 $b 为真,右侧表达式的值就为 $b,否则,右侧表达式的值就为0,最后,将表达式的值赋给$a。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值