算术运算符
+ 加
- 减
* 乘
/ 除
% 取模
取模运算符的操作数在运算之前都会转换成整数(除去小数部分)。
取模运算符 % 的结果和被除数的符号(正负号)相同。即$a % $b 的结果和 $a 的符号相同
++ 自加1
-- 自减1
<?php
$a=20;
$b=6;
$c=$a+$b;
$d=$b-$a;
$e=$a*$b;
$f=$a/$b;
$g=$a%$b;
$h=$a++; //$h=20,$a=11,先赋值给$h,再自加1
$i=++$a; //$i=12,$a=12,$a先自加1,再赋值给$i
$j=$a--;
$k=--$a;
$l=$d%$f; //即$l=-14%3
echo '$c='.$c.'</br>';
echo '$d='.$d.'</br>';
echo '$e='.$e.'</br>';
echo '$f='.$f.'</br>';
echo '$g='.$g.'</br>';
echo '$h='.$h.'</br>';
echo '$i='.$i.'</br>';
echo '$j='.$j.'</br>';
echo '$k='.$k.'</br>';
echo '$l='.$l.'</br>';
输出
$c=26
$d=-14
$e=120
$f=3.3333333333333
$g=2
$h=20
$i=22
$j=22
$k=20
$l=-2
字符串运算符
又称连接符 .
赋值运算符
= 将右边的值赋给左边
+= $a+=5即$a=$a+5;
.=、-=、*=、%=、/=同理
比较运算符
> 大于
< 小于
>= 大于等于
<= 小于等于
== 等于
=== 全等于(值和类型都相等)
!= 不等于
!== 不全等
如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转为数值并且比较按照数值来进行。
例:'123'->123,'a'->0,'123a'->123,'a123'->0
表达式 (expr1) ? (expr2) : (expr3) 在 expr1 求值为 TRUE
时的值为 expr2,在 expr1 求值为 FALSE
时的值为expr3。
逻辑运算符
&&或and 逻辑与——两方都为true则为ture
||或or 逻辑或——一方为ture则为ture
! 逻辑非——不为ture则为ture
xor 逻辑异或——任意一方为ture但不同时为ture则为ture
短路特性:在&&运算时,前面的是false,则后面数据无论是什么,表达式都为false,不去执行后面的操作。
在||运算时,前面的是ture,则后面数据无论是什么,表达式都为ture,不去执行后面的操作。
位运算符
$a & $b | And(按位与) | 将把 $a 和 $b 中都为 1 的位设为 1。 |
$a | $b | Or(按位同或) | 将把 $a 和 $b 中任何一个为 1 的位设为 1。 |
$a ^ $b | Xor(按位异或) | 将把 $a 和 $b 中一个为 1 另一个为 0 的位设为 1。 |
~ $a | Not(按位取反) | 将 $a 中为 0 的位设为 1,反之亦然。 |
$b=30;
$c=$a&$b
此时,将$a转为二进制:16+4->2^4+2^2->00010100
$b转为二进制:16+8+4+2->2^4+2^3+2^2+2^1->00011110
则,$a&$b->00010100=20
$a|$b->00011110=30
$a^$b->00001010=10
~$a->11101011=-21(第一位为1则是负数)
错误控制运算符
@ 将其放置在一个 PHP 表达式之前,可以屏蔽错误,尽量少用。
运算符优先级问题
尽量使用括号来操作优先级,可读性高。