zoukankan      html  css  js  c++  java
  • PHP学习 Day_04


    运算符

    算数运算符

    • 用来处理算数运算。如加、减、乘、除和求余(取模)
    <?php
    
    $a=4;
    $b=5;
    $c=$a+$b;
    $d=$a-$b;
    $e=$a*$b;
    $f=$a/$b;  //实型结果
    
    echo "$c <br/>";
    echo "$d <br/>";
    echo "$e <br/>";
    echo "$f <br/>";
    
    ?>
    

    运算结果:

    9 
    -1 
    20 
    0.8 
    
    • 求余数的正负结果与被除数相同,如果运算中含有小数,去尾后再运算
    <?php
    
    $a=4;
    $b=5;
    
    $c=$a%$b;  //商为0,余数为4
    $d=$b%$a;  //商为1,余数为1
    
    $e=(-8)*3;  //商为-2,余数为-2
    $f=(-8)/(-3);  //商为2,余数为-2
    $g=12.5%(-5.5);  //去尾,即12%(-5)。商为-2,余数为2
    
    echo "$c <br/>";
    echo "$d <br/>";
    echo "$e <br/>";
    echo "$f <br/>";
    echo "$g <br/>";
    ?>
    

    运算结果:

    4 
    1 
    -2 
    -2 
    2 
    
    • 取模时,运算结果一定比第二个变量小。
    • 含有一个负数时,运算结果与第一个变量的符号保持一致
    • 当有小数时,去掉小数部分,再进行取模

    字符串运算符

    • 字符运算符只有一个,即连接两个字符串的.
    <?php
    
    $a="Hello";
    $b="Bad";
    $c=$a.$b;
    
    echo $c;
    
    ?>
    

    运算结果:

    HelloBad
    

    赋值运算符

    • 将赋值号右边的表达式的值赋给左边的变量
    操作符号展开式含义
    赋值 = $a=exp; $a=exp; 将右边的值赋给左边
    += $a+=exp; $a=$a+exp; 先计算出exp,然后加$a,再将值赋给左边
    -= $a-=exp; $a=$a-exp; 先计算出exp,然后减$a,再将值赋给左边
    *= $a*=exp; $a=$a*exp; 先计算出exp,然后乘以$a,再将值赋给左边
    /= $a/=exp; $a=$a/exp; 先计算出exp,然后除以$a,再将值赋给左边
    连接 .= $a.=exp; $a=$a.exp 先计算出exp,然后将$a与exp连接,再将值赋给左边
    取模 %= $a%=exp; $a=$a%exp; 先计算出exp,然后计算$a%exp的模,再将值赋给左边
    <?php
    //使用utf-8编码,不然可能会出现乱码
    header("Content-Type:text/html;charset=utf-8");
    
    $a=2+3*5;  //值为17
    echo '$a的值为:'.$a."<br/>";
    $a+=3+4;  //$a=17+(3+4),值为24
    echo '$a+=的值为:'.$a."<br/>";
    
    $b=2;
    $b-=3+4;  //$b=2-(3+4),值为-5
    echo '$b-=的值为:'.$b."<br/>";
    $b*=2+3;  //$b*(2+3),值为-25
    echo '$b*=的值为:'.$b."<br/>";
    
    $c=5;
    $c/=5-4;  //$c=5/(5-4),值为5
    echo '$c/=的值为:'.$c."<br/>";
    $c.=2+3;  //$c=$c."2+3",值为55
    echo '$c.=的值为:'.$c."<br/>";
    var_dump($c);  //查看$c的数据类型
    echo "<br/>";
    
    $d=14;
    $d%=2+3;  //$d=14%(2+3),值为4
    echo '$d%=的值为:'.$d."<br/>";
    $e=$f=5;  //先将5赋值给$f,再将$f赋值给$e,值为5
    echo '$e的值为:'.$e."<br/>";
    echo '$f的值为:'.$f."<br/>";
    
    ?>
    

    运算结果:

    $a的值为:17
    $a+=的值为:24
    $b-=的值为:-5
    $b*=的值为:-25
    $c/=的值为:5
    $c.=的值为:55
    string(2) "55" 
    $d%=的值为:4
    $e的值为:5
    $f的值为:5
    
    • 因为用了字符串连接符,所以$c的数据类型就会转换为字符串类型
    • 这里因为用了中文,所以一定要注意编码!

    位运算符

    • 对二进制数从高位到低位对气后进行运算
    符号作用说明
    & 按位与 $a&$b 只有两个都为1的时候,结果才为1。其余都为0
    | 按位或 $a|$b 只有两个都为0的时候,结果才为0。其余都为1
    ^ 按位异或 $a^$b $a!=$b,两个不相同时,结果才为1。其余都为0
    ~ 按位取反 ~$a 十进制数先+1,再取相反值
    << 向左移位 $a<<2 先将$a换成二进制数,再向左移两位,十进制数相当于乘以4
    >> 向右移位 $a>>3 先将$a换成二进制数,再向右移三位,十进制数相当于除以8

    注意!移位时空出的位补0

    <?php
    //使用utf-8编码,不然可能会出现乱码
    header("Content-Type:text/html;charset=utf-8");
    
    $a=6&5;  //0110&0101,值为0100,即为十进制数4
    echo '$a=6&5的值为:'.$a."<br/>";
    
    $b=7|5;  //0111|0101,值为0111,即十进制数7
    echo '$b=7|5的值为:'.$b."<br/>";
    
    $c=8^4;  //1000^0100,值为1100,即十进制数12
    echo '$c=8^4的值为:'.$c."<br/>";
    
    $d=~7;  //0111,去反为1000,最高位1表示负数,即十进制数-8
    echo '$d=~7的值为:'.$d."<br/>";
    
    $e=6<<2;  //00000110,左移两位,即00011000,即十进制数24
    echo '$e=6<<2的值为:'.$e."<br/>";
    
    $f=8>>3;  //1000,右移三位,即0001,即十进制数1
    echo '$f=8>>3的值为:'.$f."<br/>";
    ?>
    

    运算结果:

    $a=6&5的值为:4
    $b=7|5的值为:7
    $c=8^4的值为:12
    $d=~7的值为:-8
    $e=6<<2的值为:24
    $f=8>>3的值为:1
    
    • 在与、或、异或运算时,要换算成二进制数计算得出结果
    • 在取反、移位运算时,可以换算成二进制数计算,也可以用算数运算得出结果

    递增递减运算符

    • 用于单个变量自增1或自减1
      • ++ 递增运算符
      • -- 递减运算符
    <?php
    //使用utf-8编码,不然可能会出现乱码
    header("Content-Type:text/html;charset=utf-8");
    
    $a=5;
    echo '$a++的值为:'.$a++."<br/>";  //先输出5,$a在+1
    # 因为上面的计算,$a=6,下面的计算$a值为6
    echo '++$a的值为:'.++$a."<br/>";  //$a先+1,在输出7
    
    $b=5;
    $c=--$b- --$b;  //先计算--$b的值为4,再自减1为3,即$c=4-3,输出值为1
    echo '--$b- --$b的值为:'.$c."<br/>";
    
    ?>
    

    运算结果:

    $a++的值为:5
    ++$a的值为:7
    --$b- --$b的值为:1
    
    • 在使用连续的–运算符时(如上的$c),中间要用空格空隔开,或者用括号包含变量
    • 递增递减运算符只能用于单个变量不能用于多个变量,如$a=++($b+$c)

    逻辑运算符

    • 用于处理逻辑运算
    运算符说明
    &&或and(逻辑与) $a&&$b a和a和ab都为真时返回真,否则为假
    ||或or (逻辑或) $a||$b a和a和ab都为假时返回假,否则为真
    xor(逻辑异或) $axor$b a和a和ab不相同时返回真,否则为假
    !(逻辑非) !$a $a为真时!$a为假,$a为假时!$a为真
    <?php
    //使用utf-8编码,不然可能会出现乱码
    header("Content-Type:text/html;charset=utf-8");
    
    $a=true;
    $b=false;
    
    # 逻辑与,都为真时返回真,否则为假。(&&与and作用相同)
    if($a and $b)    //条件不成立
        echo '两个都为真';
    else
        echo '至少有一个为假';  //输出
    echo "<br/>";
    
    # 逻辑或,都为假时返回假,否则为真。(||与or作用相同)
    if ($a or $b)    //条件成立
        echo '至少有一个为真';  //输出
    else
        echo '两个都为假';
    echo "<br/>";
    
    # 逻辑异或,不相同时返回真
    if($a xor $b)    //条件成立
        echo '$a不等于$b';  //输出
    else
        echo '$a等于$b';
    echo "<br/>";
    
    # 逻辑非,$a为真时,!$a为假
    if(!$a)    //条件不成立
        echo '$a为假';
    else
        echo '$a为真';  //输出
    ?>
    

    运算结果:

    至少有一个为假
    至少有一个为真
    $a不等于$b
    $a为真
    

    这里的逻辑运算符和我们数学中的真假命题是一样的

    比较运算符

    • 用于比较两个数据的值,返回一个布尔类型的结果
    运算符意义说明
    < 小于 $a<$b $a小于$b时,返回true,否则返回false
    > 小于 $a>$b $a大于$b时,返回true,否则返回false
    <= 小于或等于 $a<=$b $a小于或等于$b时,返回true,否则返回false
    >= 大于或等于 $a>=$b $a大于或等于$b时,返回true,否则返回false
    == 相等 $a==$b $a等于$b时,返回true,否则返回false
    != 不相等 $a!=$b $a不等于$b时,返回true,否则返回false
    === 恒等 $a===$b $a与$b相等且数据类型相同时,返回true,否则返回false
    !== 非恒等 $a!=$b $a与$b值不相等或数据类型不相同时,返回true,否则返回false
    <?php
    //使用utf-8编码,不然可能会出现乱码
    header("Content-Type:text/html;charset=utf-8");
    
    $a=55;
    $b=55.0;
    $c=50;
    
    # 判断$a是否大于$c
    if($a>$c)    //条件成立
        echo  '$a大于$c';  //输出
    else
        echo '$c大于$a';
    echo "<br/>";
    
    # 判断$a是否小于$c
    if($a<$c)    //条件不成立
        echo '$a小于$c';
    else
        echo '$c小于$a';  //输出
    echo "<br/>";
    
    # 判断$a是否小于等于$c
    if($a<=$c)    //条件不成立
        echo '$a小于或等于$c';
    else
        echo '$a大于$c';  //输出
    echo "<br/>";
    
    # 判断$a是否大于等于$c
    if($a>=$c)    //条件成立
        echo '$a大于或等于$c';  //输出
    else
        echo '$a小于$c';
    echo "<br/>";
    
    # 判断$a是否等于$c
    if($a==$c)    //条件不成立
        echo '$a等于$c';
    else
        echo '$a不等于$c';  //输出
    echo "<br/>";
    
    # 判断$a是否小于等于$c
    if($a!=$c)    //条件成立
        echo '$a不等于$c';  //输出
    else
        echo '$a等于$c';
    echo "<br/>";
    
    if($a===$b)    //条件不成立
        echo '$a等于$b,且数据类型相同';
    else
        echo '$a不等于$b,或数据类型不相同';  //输出
    echo "<br/>";
    
    if($a!==$b)    //条件成立
        echo '$a不等于$b,或数据类型不相同';  //输出
    else
        echo '$a等于$b,且数据类型相同';
    echo "<br/>";
    
    ?>
    

    运行结果:

    $a大于$c
    $c小于$a
    $a大于$c
    $a大于或等于$c
    $a不等于$c
    $a不等于$c
    $a不等于$b,或数据类型不相同
    $a不等于$b,或数据类型不相同
    

    短路运算

    • 如果一个条件由多个条件组成,若已经判断出整个条件的结果,则无需判断后面的条件
    • 在进行或运算时,第一个条件成立了,就不再判断第二个条件是否成立
    • 在进行与运时,第一个条件成立了,还需要判断第二个条件是否成立。如果第一个条件不成立,也不再判断第二个条件是否成立

    三元运算符

    • 提供简单的逻辑判断
    • 格式:表达式1?表达式2:表达式3
    • 如果表达式1成立,整个表达式的值为表达式2的值,否则为表达式3的值
    <?php
    //使用utf-8编码,不然可能会出现乱码
    header("Content-Type:text/html;charset=utf-8");
    
    $a=15;
    $b=25;
    
    # 首先判断$a是否大于$b,成立则输出$a的值,不成立则输出$b的值
    $c=($a>$b)?$a:$b;  //可以用来计算最大值
    echo $c."<br/>";
    
    # 首先判断$st是否为字符串类型,是则输出“我是坏坏!”,不是则输出“我不是字符串!”
    $st="This is string!";
    $d=(is_string($st))?"我是坏坏!":"我不是字符串!";
    echo $d;
    ?>
    

    运算符优先级

    • 与算术运算符中的先乘除后加减相同。可以加圆括号改变运算顺序
    运算符作用结合方向
    ++、– 递增、递减 非结合
    !、~ 逻辑非、位求反 非结合
    (int)(float)等 强制转换数据类型 非结合
    *、/、% 乘、除、求余 左到右
    +、-、. 加、减、拼接 左到右
    <<、>> 位移 左到右
    <=、>= 小于等于、大于等于 非结合
    ==、!= 等于、不等于 非结合
    === 、!== 恒等于、非恒等 左到右
    & 位运算符 与 左到右
    ^ 位运算符 异或 左到右
    | 位运算符 或 左到右
    && 逻辑运算符 与 左到右
    || 逻辑运算符 或 左到右
    ? : 三元运算符 左到右
    =、+=、-= 赋值运算符 赋值、加、减 右到左
    and 逻辑运算符 与 左到右
    xor 逻辑运算符 异或 左到右
    or 逻辑运算符 或 左到右
    , 列表分割符 左到右

    小结

    1. 算数运算符取模时,结果的符号与被除数相同,运算数中有小数时,去尾再运算
    2. 赋值运算符是先计算右边,再把值赋给左边的变量
    3. 逻辑运算符和比较运算符中,要注意短路运算
    4. 在涉及到运算符优先级时,可以多加括弧,降低出错概率

     

    以上内容均属原创,如有不详或错误,敬请指出。
    
    本文作者: 坏坏
  • 相关阅读:
    scrapy框架之comand line tool
    CSS选择器与XPath语言
    Selenium之Web页面滚动条滚操作
    Selenium+Chrome+PhantomJS 爬取淘宝
    爬取今日头条中的图片
    django 和 mongdb 写一个简陋的网址,以及用django内置的分页功能
    charts 画饼图
    charts 画折线图
    oracle的char和varchar类型
    ORA-02049: 超时: 分布式事务处理等待锁的解决方法
  • 原文地址:https://www.cnblogs.com/bad5/p/12424283.html
Copyright © 2011-2022 走看看