php中and 和 &&出坑指南


Posted in Javascript onJuly 13, 2018

我原来以为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

更奇怪, 这时怎么是对的. 所以问题可能出现在=上, 一番google和文档,终于找到了答案!

运算符优先级

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

结合性 运算符 额外信息
无结合性 clone new 克隆和new
[ 数组
** 算术
++ — ~ (int) (float) (string) (array) (object) (bool) @ 类型和自增/自减
无结合性 instanceof 类型
! 逻辑运算
* / % 算术
+ ? . 算术和字符串
> 按位运算
无结合性 >= 比较运算
无结合性 == != === !== 比较运算
& 按位运算和引用
^ 按位运算
| 按位运算
&& 逻辑运算
| | 逻辑运算
?: 三元条件选择
= += -= *= /= .= %= &= = ^= >= => | 赋值
and 逻辑运算
xor 逻辑运算
or 逻辑运算
, 很多使用
Javascript 相关文章推荐
Jquery Ajax 学习实例2 向页面发出请求 返回JSon格式数据
Mar 15 Javascript
js对象的构造和继承实现代码
Dec 05 Javascript
JS子父窗口互相操作取值赋值的方法介绍
May 11 Javascript
jquery子元素过滤选择器使用示例
Jun 24 Javascript
JavaScript SetInterval与setTimeout使用方法详解
Nov 15 Javascript
javascript获取本机操作系统类型的方法
Aug 13 Javascript
Vue.js分页组件实现:diVuePagination的使用详解
Jan 10 Javascript
Vue.directive 自定义指令的问题小结
Mar 04 Javascript
在 Vue-CLI 中引入 simple-mock实现简易的 API Mock 接口数据模拟
Nov 28 Javascript
JS实现碰撞检测效果
Mar 12 Javascript
浅谈vue中get请求解决传输数据是数组格式的问题
Aug 03 Javascript
vue使用节流函数的踩坑实例指南
May 20 Vue.js
vue项目base64字符串转图片的实现代码
Jul 13 #Javascript
angular 组件通信的几种实现方式
Jul 13 #Javascript
JavaScript实现异步图像上传功能
Jul 12 #Javascript
Angular4 组件通讯方法大全(推荐)
Jul 12 #Javascript
vue移动端轻量级的轮播组件实现代码
Jul 12 #Javascript
详解node.js的http模块实例演示
Jul 12 #Javascript
Vue中使用的EventBus有生命周期
Jul 12 #Javascript
You might like
咖啡语言
2021/03/03 咖啡文化
PHP5中虚函数的实现方法分享
2011/04/20 PHP
PHP三元运算的2种写法代码实例
2014/05/12 PHP
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
2015/01/20 PHP
PHP编程基本语法快速入门手册
2016/01/07 PHP
php使用SAE原生Mail类实现各种类型邮件发送的方法
2016/10/10 PHP
CentOS 上搭建 PHP7 开发测试环境
2017/02/26 PHP
File, FileReader 和 Ajax 文件上传实例分析(php)
2011/04/27 Javascript
JavaScript中为什么null==0为false而null大于=0为true(个人研究)
2013/09/16 Javascript
javascript中的变量作用域以及变量提升详细介绍
2013/10/24 Javascript
javascript框架设计之浏览器的嗅探和特征侦测
2015/06/23 Javascript
bootstrapValidator bootstrap-select验证不可用的解决办法
2017/01/11 Javascript
angular $watch 一个变量的变化(实例讲解)
2017/08/02 Javascript
vue translate peoject实现在线翻译功能【新手必看】
2018/06/07 Javascript
JavaScript递归函数定义与用法实例分析
2019/01/24 Javascript
通过实例学习React中事件节流防抖
2019/06/17 Javascript
Vue js with语句原理及用法解析
2020/09/03 Javascript
Linux下Python获取IP地址的代码
2014/11/30 Python
Python实现二分法算法实例
2015/02/02 Python
Python实现的IP端口扫描工具类示例
2019/02/15 Python
Python Tkinter 简单登录界面的实现
2019/06/14 Python
将数据集制作成VOC数据集格式的实例
2020/02/17 Python
英国拳击装备购物网站:RDX Sports
2018/01/23 全球购物
MADE荷兰:提供原创设计师家具
2018/04/03 全球购物
Carter’s OshKosh加拿大:购买婴幼儿服装和童装
2018/11/27 全球购物
英国领先的票务代理商之一:The Ticket Factory
2019/02/09 全球购物
介绍一下Ruby的特点
2013/01/20 面试题
应届生程序员求职信
2013/11/05 职场文书
农村党支部先进事迹
2014/01/14 职场文书
yy司仪主持词
2014/03/22 职场文书
《和田的维吾尔》教学反思
2014/04/14 职场文书
《大作家的小老师》教学反思
2014/04/16 职场文书
企业文化演讲稿
2014/05/20 职场文书
文艺晚会策划方案
2014/06/11 职场文书
2014年食堂工作总结
2014/11/20 职场文书
【海涛解说】暗牧也疯狂,牛蛙成配角
2022/04/01 DOTA