美文网首页
PHP中一些易混运算符的比较

PHP中一些易混运算符的比较

作者: 李瑞宝 | 来源:发表于2018-03-21 14:47 被阅读0次

    0x00 PHP中 =====的区别

    ===比较两个变量的类型
    ==只比较他们的值

    e.g
    比如整数0和浮点数0.0
    用==比较返回TRUE
    用===比较返回FLASE

    用代码测试

    <?php 
    $str = "0dff";
    if (0 == $str) {
        echo "true";
    }else{
        echo "false";
    }
    
    ?>
    

    上面的这个程序的输出结果是true,也就是说在编译中程序默认0和0dff是相等的。
    这是因为在执行关系运算”==“时要求运算符两边的数据类型必须一致,所以等号右边的字符串被强制转换为了整型0。这也是一系列弱类型语言的一个缺点。

    #在php中提供了“===”来解决这个问题
    
    <?php 
    $str = "0dff";
    if (0 === $str) {
        echo "true";
    }else{
        echo "false";
    }
    

    这个程序的输出是false
    全等于操作过程如下:
    1.判断全等于操作符2边的数据类型是否相同 如果不相同,则返回false
    2.判断全等于操作符2边的值是否相等,如果 不相等,则返回false
    3.最后将上面2步的操作进行与操作。返回与操作的结果

    0x01 PHP中 单引号 ' '双引号 " "的区别

    双引号串中的内容可以被解释而且替换,而单引号串中的内容总被认为是普通字符。

    <?php
    $parker = 2; 
    echo "parker is $parker";  // parker is 2 
    echo 'parker is $parker';   //  parker is $parker
    
    echo "parker is $parker\n"; // parker is 2 (同时换行) 
    echo 'parker is $parker\n'; //  parker is $parker\n 
     
    ?> 
    

    在单引号串中甚至反斜杠也失去了他的扩展含义(除了插入反斜杠\和插入单引号')。
    所以,当在字串中进行变量代换和包含\n(换行符)等转义序列时,应该使用双引号。
    单引号串可以用在其他任何地方,脚本中使用单引号串处理速度会更快些。

    0x02 PHP中 or||的区别

    很多人认为PHP中 or|| 是可以划等号的,一开始我也是这么认为的,但是其实不是,它们还是存在一个优先级的差别。下面通过一个例子说明它们的差异

    <?php
    $a = false || true;
    $b = false or true;
    var_dump($a);//true
    echo '<br />';
    var_dump($b);//false
    ?>
    

    执行后,$a为true,而$b为false。这是因为||的优先级大于 =,先执行 false || true,然后将执行后的结果true赋值给$a。而or的优先级小于=,先将false赋值给$b,因此$b就为false

    最后附上php文档中关于运算符的图例

    相关文章

      网友评论

          本文标题:PHP中一些易混运算符的比较

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