php-运算符


运算符(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、运算符优先级:

在多种运算符同时存在时,如何结合运算

 

posted @ 2020-09-08 10:42  山鬼不识字  阅读(386)  评论(0编辑  收藏  举报