• PHP运算符


    一、赋值运算符“=”

    • “=”将赋值号右边的值赋值给左边的变量,左边的必须是变量不能是式子

    二、算术运算符“+”、“-”、“*”、“/”、“%”

    • “%”取模(取余),求两个数相除,除不尽的部分
    <?php
       $i=5;
       $result=$i%3;
       echo $result;//2
    ?>

    三、自操作运算符“++”、“--”、“+=”、“-=”、“*=”、“/=”、“%=”

    • "++"自增运算符

      ①后自增:变量++:先取内存中变量的值,放在式子中,再对变量的值加1(先参与运算,后加1)

    <?php
       $v=10;
       $result= $v++;
       echo $result;//10
       echo $v;//11
    ?>

      ②前自增:++变量:先更改内存中变量的值,再将新值读取到这个式子中(先加1,后参与运算)

    <?php
       $v=10;
       $result= ++$v;
       echo $result;//11
       echo $v;//11
    ?>
    • "--"自减运算符

      ①后自减:变量--:先取内存中变量的值,放在式子中,再对变量的值减1(先参与运算,后减1)

    <?php
       $v=10;
       $result= $v--;
       echo $result;//10
       echo $v;//9
    ?>

      ②前自减:--变量:先更改内存中变量的值,再将新值读取到这个式子中(先减1,后参与运算)

    <?php
       $v=10;
       $result= --$v;
       echo $result;//9
       echo $v;//9
    ?>
    • “+=”、“-=”、“*=”、“/=”、“%=”  

    • 扩展一个例子

    四、字符串拼接符“.”“.=”

    • 拼接一个表格
    <?php
       $tab = "<table border=1 rules='all'>";
       $tab .= "<tr>";
       $tab .= "<td>数据</td><td>数据</td><td>数据</td>";
       $tab .= "</tr>";
       $tab .= "<tr>";
       $tab .= "<td>数据</td><td>数据</td><td>数据</td>";
       $tab .= "</tr>";
       $tab .= "<tr>";
       $tab .= "<td>数据</td><td>数据</td><td>数据</td>";
       $tab .= "</tr>";
       $tab .= "</table>";
       echo $tab;
    ?>

    • 如果.接收一个数值,数值与.之间要有空格

    五、比较运算符“>”、“<”、“>=”、“<=”、“==”、“===”、“!=”、“!==”

    • "=="用于判断两个数的值是否相等,取反是"!="
    • ''===''用于判断变量的值与类型是否都相等,取反是"!=="
    • 比较运算符得到的最终结果是Boolean类型的值

    六、逻辑运算符"&&" "||" "!" "and" "or"

    • "&&"逻辑与

    ①真值运算规则:参与运算的两个操作数,全部为true或者能够转为true,那么最终的结果才是true(全真则真)

    ②假值运算规则:参与运算的两个操作数,只要有一个为false或者能够转为false,那么最终的结果就是false(有假则假)

    ③逻辑与短路

    • "||"逻辑或

    ①真值运算规则:参与运算的两个操作数,全部为false或者能够转为false,那么最终的结果才是false(全假则假)

    ②假值运算规则:参与运算的两个操作数,只要有一个为true或者能够转为true,那么最终的结果就是true(有真则真)

    ③逻辑或短路

    • "!"逻辑非:对操作数据进行取反

    • "and"逻辑与:运算规则与&&运算规则相同,唯一的区别就是&&的优先级高于=,而and的优先级低于=
    <?php
       $v1 = 10;
       $v2 = false;
       $result = $v1 && $v2;
       var_dump($result);//bool(false)
    
       $result = $v1 and $v2;
       var_dump($result);//int(10)
    ?>
    • "or"逻辑或:运算规则与 || 运算规则相同,唯一的区别就是 || 的优先级高于=,而and的优先级低于=
    <?php
       $v1 = 10;
       $v2 = false;
       $result = $v1 || $v2;
       var_dump($result);//bool(true)
    
       $result = $v1 or $v2;
       var_dump($result);//int(10)
    ?>
    • 补充:运算符的优先级(在一个式子中出现多种运算符时,运算之间会有优先级),口诀:单、算、关、逻、条、赋、and和or、逗

    七、条件运算符(三元运算符)

    • 表达式?表达式A:表达式B-----先计算表达式是否成立,成立取表达式A,不成立取表达式B
    <?php
       $v1 = 10;
       $v2 = 20;
       $v3 = 30;
       $result = $v1>$v2?$v1:$v2;
       $max = $result>$v3?$result:$v3;
       echo $max;//30
    ?>
    • 扩展:变量?:表达式B-----如果变量能转换为true,那么就取变量,佛则取表达式B
    <?php
       $v1 = 10;
       $result = $v1?:30;
       echo $result;//10
    ?>

    八、错误控制运算符

    • "@"错误抑制符,作用是不显示错误信息

    • php.ini中隐藏错误(全局配置)

    • 脚本级的错误控制:仅仅作用于当前的PHP脚本文件

       ①ini_set(配置项名,值)用于设置配置项的值

      ②ini_get(配置项名)用于获取配置项的值

    九、位运算符"|" "&" "^" "~" "<<" ">>''

    • "|"按位或:参与运算的两个操作数的二进制形式对应的位进行或运算,位只要有一个为1,最终结果位就是1,如果都为0,最终结果位是0

    <?php
       $v1 = 10;             //    01010 二进制
       $v2 = 20;             //    10100 二进制          
       $result= $v1 | $v2;   //    11110 二进制
       echo $result;         //    30    十进制
    ?>
    • "&"按位与:参与运算的两个操作数的二进制形式对应的位进行与运算,位只要有一个为0,最终结果位就是0,如果都为1,最终结果位是1

    <?php
       $v1 = 10;             //    01010 二进制
       $v2 = 20;             //    10100 二进制          
       $result= $v1 & $v2;   //    00000 二进制
       echo $result;         //    0     十进制
    ?>
    • "^"按位异或:参与运算的两个操作数的二进制形式对应的位,如果相同,结果位为0,不同则为1

    <?php
       $v1 = 10;             //    01010 二进制
       $v2 = 20;             //    10100 二进制          
       $result= $v1 ^ $v2;   //    11110 二进制
       echo $result;         //    30     十进制
    ?>
    • "~"按位非:参与运算的两个操作数的二进制形式对应的位进行取反

    <?php
       $v1 = 1;             //    0000000000000000001 二进制          
       $result = ~ $v1;     //    1111111111111111110 内存中按位取反后的二进制形式(补码)
                            //    1111111111111111101 (补码反推)反码  
                            //    0000000000000000010 (反码反推)原码
    
       echo $result;        //    -2                  十进制
    ?>
    • "<<"左移:对二进制数据整体向左移指定的位置,左移左侧移出要被忽略,右侧补0;可以快速对一个数加位

    <?php
       $v = 1;             //    0000000000000000001 二进制          
       $result = $v<<1;    //    0000000000000000010---->2
       $result = $v<<2;    //    0000000000000000100---->4
       $result = $v<<3;    //    0000000000000001000---->8
       $result = $v<<4;    //    0000000000000010000---->16
    ?>
    • ">>''右移:对二进制数据整体向右移指定的位置,右移右侧移出要被忽略,左侧补0;可以快速对一个数减位

    <?php
       $v = 16;             //   0000000000000010000二进制          
       $result = $v>>1;    //    0000000000000001000---->8
       $result = $v>>2;    //    0000000000000000100---->4
       $result = $v>>3;    //    0000000000000000010---->2
       $result = $v>>4;    //    0000000000000000001---->1
    ?>

    十、扩展:原码、反码和补码

    • 原码:就是带有正负号的二进制数;在计算机内所有的信息的表示都是使用0和1表示的,正负号也不例外;人们规定,如果是负数,在最高位使用0表示+,如果是负数在最高位使用1表示
    • 反码:正数的反码与原码相同,负数的反码,最高位得符号位不变,其余位取反
    • 补码:正数的补码与原码相同,负数的补码在反码的基础上加1
    • 结论:

      ①以上只是在内存中的一个表现形式,最终在显示时还要转为十进制

       ②对于正数,原码到反码到补码,没有任何的变动,所以二进制对应的十进制数即可

       ③对于负数,先由补码反推出反码,再由反码反推出原码,再将原码转为十进制

     

    十一、扩展例子:两个数互换位置

    • 方法1:借助第三个变量
    <?php
       $v1=10;
       $v2=20;
       $tmp=$v1;
       $v1=$v2;
       $v2=$tmp;
       echo $v1;//20
       echo $v2;//10
    ?>
    • 方法2:两数相加法
    <?php
       $v1=10;
       $v2=20;
       $v1=$v1+$v2;
       $v2=$v1-$v2;
       $v1=$v1-$v2;
       echo $v1;//20
       echo $v2;//10
    ?>
    • 方法3:按位异或法
    <?php
       $v1=10;             //01010
       $v2=20;             //10100
       $v1=$v1^$v2;        //11110----$v1(新)
                           //10100----$v2
       $v2=$v1^$v2;        //01010----$v2(结果)-------10
                           //11110----$v1(新)
       $v1=$v1^$v2;        //10100----$v1(结果)-------20
       echo $v1;//20
       echo $v2;//10
    ?>
  • 相关阅读:
    【代码片段】双语导航/导航中鼠标经过变换文字
    【代码片段】渐变写法
    as3.0 复习一
    【代码片段】as3.0 鼠标指针更换代码
    二班信息管理系统
    ubuntu server下apache安装配置以及优化(摘录)
    bootstrap,好东西,对于后端开发人员是个解脱
    今天发现staff邮箱在用LDAP
    FastCGI及PHPFPM
    推荐vi配置及说明
  • 原文地址:https://www.cnblogs.com/EricZLin/p/9149551.html
Copyright © 2020-2023  润新知