• php and和&&的一个坑(文章是发现其他博客,保存自己笔记)


    我原来以为PHP中的and和&&是一样的, 只是写法上为了可读性和美观, 事实上我错了. 这里面深藏了一个坑!
    看以下代码:

    $bA = true;
    $bB = false;
    $b1 = $bA and $bB;
    $b2 = $bA && $bB;
    var_dump($b1); // $b1 = true
    var_dump($b2); // $b2 = false
    $bA = false;
    $bB = true;
    $b3 = $bA or $bB;
    $b4 = $bA || $bB;
    var_dump($b3); // $b3 = false
    var_dump($b4); // $b4 = true
    

      

    奇怪吧, and/&&和or/||出来的结果竟然不一样的. 问题出在哪里呢?
    我们再看一段代码!

    $bA = true;
    $bB = false;
    var_dump($bA and $bB); // false
    var_dump($bA && $bB); // false
    $bA = false;
    $bB = true;
    var_dump($bA or $bB); // true
    var_dump($bA || $bB); // true
    

    再看看换成数字

         $bA = 10;
            $bB = 20;
            $b1 = $bA and $bB;
            $b2 = $bA && $bB;
            var_dump($b1); // $b1 = 10
            var_dump($b2); // $b2 = true
    $bA = 10; $bB = 20; $b3 = $bA or $bB; $b4 = $bA || $bB; var_dump($b3); // $b3 = 10 var_dump($b4); // $b4 = true

    $bA = 10; $bB = 20; var_dump($bA and $bB); // true var_dump($bA && $bB); // true
    $bA = 10; $bB = 20; var_dump($bA or $bB); // true var_dump($bA || $bB); // true

      

    更奇怪, 这时怎么是对的. 所以问题可能出现在=上

    运算符优先级
    通过这个表, 我们可以看到 and/&& 和 or/|| 这两组运算符的优先级竟然是不一样的. and和or的优先级是低于=的, 所以上面的代码就好理解了, 就是先做赋值然后再做了一个and或or的逻辑运算, 这个运算的结果并没有存下来. 所以最后出来让我们匪夷所思的结果.

  • 相关阅读:
    LeetCode 345. Reverse Vowels of a String 题解
    LeetCode 344. Reverse String 题解
    LeetCode 27. Remove Element 题解
    LeetCode 61. Rotate List 题解
    LeetCode 19.Remove Nth Node From End of List 题解
    Android耗电量
    Android 使用adb查看和修改电池信息
    Android AOP AspectJ 插桩
    Flask相关用法
    Monkey日志信息的11种Event percentage
  • 原文地址:https://www.cnblogs.com/TuWenHao/p/11352773.html
Copyright © 2020-2023  润新知