运算符(operator):是一种将数据进行运算的特殊符号,在php中共有十种运算符之多
1、赋值运算符:
=:将右边的结果(可以是变量,数据,常量和其他匀速出来的结果)保存到内存的某个位置,然后将位置的内存地址赋值给左侧的变量(常量)
2、算数运算符:
-
+:数据累加
-
-:数据相减
-
*:数据相乘
-
/:数据相除,被除不能为0(分母不为0)
-
%:数据取余,两个数(整数)相除,保留余数,被除不能为0
3、比较运算符:
比较两个数据的大小,或者两个内容是否相同
>
>=
<
<=
==:等于(值的大小相同)
!=
===:全等于(大小及数据类型都相同)
!==:不全等于(只要大小或者类型不同)
1 <?php 2 $a='123'; 3 $b=123; 4 var_dump($a==$b);//结果:bool(true) 判断为相同 5 var_dump($a===$b);//结果:bool(false) 判断为不同 6 ?>
4、逻辑运算符:
针对不同的结果进行匹配
-
&&:逻辑与
左边的条件与右边的条件同时成立(两边结果都为true),满足条件返回true,否则返回false
-
||:逻辑或
左边的条件与右边的条件只满足一个即可
-
!:逻辑非
对已有的条件进行取反
逻辑与和逻辑或又称之为短路运算:如果第一个表达式结果已满足条件。那么久不会运行逻辑运算符后面的表达式;在书写代码时,尽量将出现效率高的表达式放在第一位
5、连接运算符:
是php中将多个字符串拼接的一传符号
-
.:将两个字符串连接到一起
-
.=:复合运算,将左边的内容与右边的内容连接起来,然后重新赋值给左边变量
eg:A.=b--->A=A.b
1 <?php 2 $a='hello'; 3 $b=123; 4 echo $a.$b; //将a与b连接起来 5 echo $a.=$b; //$a=$a.$b 6 ?> 7 //结果:hello 123 hello 123
6、错误抑制符:
---在php中有一些错误可以提前预知,但是这些错误可能无法避免,但是又不希望报错给用户看,可以使用错误抑制符
-
@:在可能出错的表达式前面使用@符号即可
1 <?php 2 $a=10; 3 $b=0; 4 5 $a/$b; //用0作为被除数,会报错 6 @($a/$b); //不会报错 7 ?>
7、三目运算符:
有三个表达式参与的运算(简单的分支结构缩写)
-
语法格式:
表达式1 ? 表达式2 : 表达式3;
运算:如果表达式1成立,那么执行表达式2,否则执行表达式3
【注】如果表达式本身比较复杂,建议使用括号包起来
1 <?php 2 $a='10'; 3 $b=$a>10?100:0;//如果$a>10,则给b赋值100,否则为0 4 echo $b; 5 ?> 6 //结果:0
三目运算符可以进行复合三目运算:三目运算中的表达式2和3都可以时另外一个三目运算
8、自操作运算符:
自己操作自己的运算符
-
++:在原来的值上加1
$a=1
$a++等价于$a=$a+1
-
--:在原来的值上减1
-
在php中自操作符可以放到变量前或后,前置自操作符和后置自操作符
-
衍生符号:类似自操作
-
+=:左边的结果与右边的相加,然后赋值给左边
-
-=:左边的结果与右边的相减,然后赋值给左边
-
*=:左边的结果与右边的相乘,然后赋值给左边
-
/=:左边的结果与右边的相除,然后赋值给左边
-
%=:左边的结果与右边余运算,然后赋值给左边
-
右边是一个整体:$a+=$b-->$a=$a+$b
-
1 <?php 2 $a=$b=1; 3 $a++; 4 ++$b; //独立操作,不参与其他运算 5 echo $a,$b; //结果:2 2 6 echo $a++,++$b; //$a和$b不只是独立运算,还参与了输出运算,结果:2 3 ,但a和b都变成了3 7 ?> 8 9 10 <?php 11 $a=3; 12 $b=6; 13 $a+=$b; //$a=$a+$b 14 echo $a,$b; //结果:9 6 15 ?>
9、计算机码:
计算机在实际存储数据的时候,采用的编码规则(二进制规则)
-
正数就是存储的原码
-
负数存储的是补码
计算机码:原码,反码和补码,数值本身最左边的一位充当符号位,0为正数,1为负数
-
原码:数据本身从十进制转换乘二进制得到的结果
正数:左边符号位为0(正数的原码,反码和补码都是原码本身)
负数:左边符号位为1
-
反码:针对负数,符号位不变,其他位取反
-
补码:针对负数,反码+1
系统中存在两个0:
-
+0:00000000
-
-0:10000000 原码
-
取反:11111111
-
补码:00000000
10、位运算符:
取出计算机中最小的单位(位bit)进行运算
【注】:1、系统进行任何位运算的时候都是使用的补码
2、运算结束之后都必须转换乘原码才是最终要显示的数据
-
&:按位与,两个位都为1,结果为1,否则为0
1 <?php 2 $a=5; 3 $b=-5; 4 var_dump($a & $b); 5 ?> 6 //取出系统存储的结果进行与操作 7 //5 00000101 8 //-5 11111011 //补码 9 //& 00000001 //最终结果 10 //转换:判断符号位,0表示正数,1表示负数(补码) 11 //输出结果:int(1)
-
|:按位或,两个有一个为1,结果为1
-
~:按位非,一个位如果为1则变成0,否则反之
1 <?php 2 $b=-5; 3 var_dump(~$b); 4 ?> 5 //取出系统存储的结果进行按位非操作 6 //-5 11111011 //补码 7 //取反 00000100 //取反的结果就是最终结果 8 //原码 00000100 9 //转换:判断符号位,0表示正数,1表示负数(补码) 10 //输出结果:int(4)
-
^:按位异或,两个相同则为0,不同则为1
-
<<:按位左移,整个位数(32位)向左移动一位,右边补0
-
'>>':按位右移,整个位数(32位)向右移动一位,左边补符号位对应内容(正数补0,负数补1),【''不是】
1 <?php 2 $b=-5; 3 var_dump($b>>2); //右移两位 4 ?> 5 //取出系统存储的结果进行按位右移操作 6 //-5 11111011 //补码 7 //右移两位 _ _111110 8 //补符号位 11111110 //补码 9 //减一 11111101 //反码 10 //取反 10000010 //原码:-2 11 //输出结果:int(-2)
11、运算符优先级:
在多种运算符同时存在时,如何结合运算