美文网首页
php运算符

php运算符

作者: henryspace | 来源:发表于2018-02-28 13:49 被阅读0次

    算数运算符

    + 加
    - 减
    * 乘
    / 除
    % 取余
    - 取反
    . 并置,连接符
    

    递增/递减运算符

    ++x 预递增
    x++ 后递增
    --x 预递减
    x-- 后递减
    注:不管运算符是前置还是后置,对x的结果都是递增或递减的,前置后置影响的是运算符处理后的结果
    

    比较运算符

    == 等于
    === 绝对等于,类型也要一致
    !=或者<> 不等于
    !=== 不等于或者类型不同
    > 大于
    < 小于
    >= 大于等于
    <= 小于等于
    

    逻辑运算符

    and或者&& 并且
    or或者||  或者,至少一个为真
    xor 异或,有且仅有一个为真
    ! 非
    

    三元运算符

     语法格式如下,相当于if...else... 
    (expr1) ? (expr2) : (expr3) 
    
    注:在 PHP7+ 版本多了一个 NULL 合并运算符 ??, 相当于js中 ||  
    <?php
    // 如果 $_GET['user']存在则返回本身,不存在返回 'nobody'
    $username = $_GET['user'] ?? 'nobody';
    // 类似的三元运算符
    $username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
    

    组合比较符(PHP7+)

    <?php
    // 整型
    echo 1 <=> 1; // 0
    echo 1 <=> 2; // -1
    echo 2 <=> 1; // 1
     
    // 浮点型
    echo 1.5 <=> 1.5; // 0
    echo 1.5 <=> 2.5; // -1
    echo 2.5 <=> 1.5; // 1
     
    // 字符串
    echo "a" <=> "a"; // 0
    echo "a" <=> "b"; // -1
    echo "b" <=> "a"; // 1
    ?>
    

    位运算符

    # [php--关于位运算符](http://www.cnblogs.com/exceed/p/5034760.html)
    
    常见四个位运算符:&(按位与),|(按位或),^(按位异或),~(按位取反)
    
    &(按位与):对应位同时为1时,在&运算后则为1,否则为0
    
    |(按位或):对应位有一个为1时,在|运算后则为1,同为0时则为0
    
    ^(按位异或):对应位不同时为1时,在^运算后为1,同时为0时则为0,同时为1时^运算后也是0
    
    ~(按位取反):$a+(~$a)=-1
    
    在计算机中,负数以其正值的补码形式表达。
     在这里我们就要知道三个概念了,原码,反码和补码。
    
    原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。
    
    8的原码为:0000 0000 0000 0000 0000 0000 0000 1000
    
    反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。取反操作指:1变0, 0变1。
    
    8按位取反:1111 1111 1111 1111 1111 1111 1111 0111
    
    补码:反码加1称为补码。也就是说,要得到一个数的补码,先得到反码,然后将反码加上1,所得数称为补码。
    
    正数的补码与其原码相同;负数的补码是在其反码的末位加1
    
    反码加1:1000 0000 0000 0000 0000 0000 000 1001;这样就得负数的正值的补码形式。也就是-9了。
    
    参考:http://www.cnblogs.com/setsail/archive/2013/05/22/3093542.html
    
       http://my.oschina.net/WarRome/blog/90707
    
    以上解释自己也没有看的太懂,但实践得出$a+(~$a)=-1
    
    小例如下:
    
    <?php
    $m=8;
    $n=12;
    $p=-109;
    $mn=$m&$n;
    echo $mn."<br>";
    $mn=$m|$n;
    echo $mn."<br>";
    $mn=$m^$n;
    echo $mn."<br>";
    $mn=~$m;
    echo $mn."<br>";
    $mn=~$p;
    echo $mn."<br>";
    ?>
    
    输出结果:
    
    8
    12
    4
    -9
    108
    
    关于按位取反的问题,再琢磨琢磨
    
    

    运算符优先级

    结合方向 运算符 附加信息
    clone new clone 和 new
    [ array()
    ++ — ~ (int) (float) (string) (array) (object) (bool) @ 类型和递增/递减
    instanceof 类型
    ! 逻辑运算符
    * / % 算术运算符
    + – . 算术运算符和字符串运算符
    << >> 位运算符
    == != === !== <> 比较运算符
    & 位运算符和引用
    ^ 位运算符
    | 位运算符
    && 逻辑运算符
    | 逻辑运算符
    ? : 三元运算符
    = += -= *= /= .= %= &= |= ^= <<= >>= => 赋值运算符
    and 逻辑运算符
    xor 逻辑运算符
    or 逻辑运算符
    , 多处用到
    注:整理来看优先级,算术 > 位 > 逻辑 > 赋值

    相关文章

      网友评论

          本文标题:php运算符

          本文链接:https://www.haomeiwen.com/subject/lhjmxftx.html