PHP 运算符
算术运算符
-$a 取反
$a + $b 加法
$a - $b 减法
$a * $b 乘法
$a / $b 除法
$a % $b 取模
$a ** $b 求幂(PHP 5.6)
-
除法运算符总是返回浮点数
-
取模运算符的操作数在运算之前都会转换成整数,和被除数的符号(正负号)相同
-
亦有 数学函数 供使用
数组运算符
-
$a + $b联合:将后者接在前者后面,并忽略后者与前者相同部分 -
$a == $b相等:如果二者数组元素相同 -
$a === $b全等:如果二者完全相同,包括顺序 -
$a != $b不等 -
$a <> $b不等 -
$a !== $b不全等
位运算符
-
$a & $bAnd(按位与)b -
$a | $bOr(按位或) -
$a ^ $bXor(按位异或) -
~ $aNot(按位取反) -
$a << $bShift left(左移 乘二) -
$a >> $bShift right(右移 除二)
比较运算符
-
$a == $b等于 -
$a === $b全等 -
$a != $b不等 -
$a <> $b不等 -
$a !== $b不全等 -
$a < $b小与 -
$a > $b大于 -
$a <= $b小于等于 -
$a >= $b大于等于 -
$a <=> $b结合比较运算符 当$a 小于、等于、大于 than $b 时 分别返回一个小于、等于、大于 0 的 integer 值(PHP7)
不使用全(不)等时会存在自动转换:
-
null或string与string比较:将NULL转换为"",进行数字或词汇比较 -
bool或null与 任何其它类型 比较:转换为bool,FALSE<TRUE -
object 与 object 比较:内置类可以定义自己的比较,不同类不能比较,相同类和数组同样方式比较属性(PHP 4 中),PHP 5 有其自己的说明
-
string,resource 或 number 与 string,resource 或 number 比较:将字符串和资源转换成数字,按普通数学比较
-
array 与 array 比较:具有较少成员的数组较小,如果运算数 1 中的键不存在于运算数 2 中则数组无法比较,否则挨个值比较(见下例)
-
object 与 任何其它类型 比较:object 总是更大
-
array 与 任何其它类型 比较:array 总是更大
三元运算符
表达式 (expr1) ? (expr2) : (expr3) 在 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3
表达式 expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr3(PHP 5.3)
合并运算符
当 expr1 为 NULL,表达式 (expr1) ?? (expr2) 等同于 expr2,否则为 expr1。
错误控制运算符
PHP 支持一个错误控制运算符:@;当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。
对新手来说一个简单的规则就是:如果能从某处得到值,就能在它前面加上 @ 运算符
执行运算符
PHP 支持一个执行运算符:反引号,PHP 将尝试将反引号中的内容作为 shell 命令来执行,并将其输出信息返回
自增减运算符
++$a先增$a++后增--$a前减$a--后减
在处理字符变量的算数运算时例如,在 PHP 中 $a = 'Z'; $a++; 将把 $a 变成 'AA';字符变量只能递增,不能递减,并且只支持纯字母(a-z 和 A-Z)
逻辑运算符
-
$a and $bAnd(逻辑与) -
$a or $bOr(逻辑或) -
$a xor $bXor(逻辑异或) -
! $aNot(逻辑非) -
$a && $bAnd(逻辑与) -
$a || $bOr(逻辑或)
与、或有两种表达,优先级不同,and or 垫底
存在如下操作:
$a = b() or c()
如果 b() 返回 false 则 c() 才会执行
运算符
-
运算符优先级
-
算术运算符
-
赋值运算符
=、+=、-=、*= 等
-
位运算符
-
比较运算符
-
错误控制运算符
-
执行运算符
-
递增/递减运算符
-
逻辑运算符
-
字符串运算符
-
数组运算符
-
类型运算符
instanceof 用于确定一个 PHP 变量是否属于某一类 class 的实例
字符串运算符
.连接运算符.=连接赋值运算符,与+=-=类似
运算符优先级
https://www.php.net/manual/zh/language.operators.precedence.php