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 相关文章推荐
javascript学习随笔(使用window和frame)的技巧
Mar 08 Javascript
javascript IE中的DOM ready应用技巧
Jul 23 Javascript
JS中的数组的sort方法使用示例
Jan 22 Javascript
jquery的ajax异步请求接收返回json数据实例
Jun 16 Javascript
js的回调函数详解
Jan 05 Javascript
angularjs 处理多个异步请求方法汇总
Jan 06 Javascript
js选项卡的实现方法
Feb 09 Javascript
浅谈JavaScript正则表达式分组匹配
Apr 10 Javascript
JS解析url查询参数的简单代码
Aug 06 Javascript
浅谈JavaScript find 方法不支持IE的问题
Sep 28 Javascript
Vue使用localStorage存储数据的方法
May 27 Javascript
JavaScript实现轮播图片完整代码
Mar 07 Javascript
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
php5新改动之短标记启用方法
2008/09/11 PHP
php操作JSON格式数据的实现代码
2011/12/24 PHP
PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
2015/03/10 PHP
PHP获取昨天、今天及明天日期的方法
2016/02/03 PHP
ThinkPHP中order()使用方法详解
2016/04/19 PHP
php实现的中文分词类完整实例
2017/02/06 PHP
PHP实现数组根据某个字段进行水平合并,横向合并案例分析
2019/10/08 PHP
jQuery拖拽 & 弹出层 介绍与示例
2013/12/27 Javascript
15个值得开发人员关注的jQuery开发技巧和心得总结【经典收藏】
2016/05/25 Javascript
微信小程序网络请求wx.request详解及实例
2017/05/18 Javascript
vue.js移动端app之上拉加载以及下拉刷新实战
2017/09/11 Javascript
Node.js成为Web应用开发最佳选择的原因
2018/02/05 Javascript
基于bootstrap页面渲染的问题解决方法
2018/08/09 Javascript
vue 组件开发原理与实现方法详解
2019/11/29 Javascript
2020淘宝618理想生活列车自动领喵币js脚本的代码
2020/06/02 Javascript
python使用正则表达式检测密码强度源码分享
2014/06/11 Python
Python 自动补全(vim)
2014/11/30 Python
Python下线程之间的共享和释放示例
2015/05/04 Python
Python中if __name__ == '__main__'作用解析
2015/06/29 Python
Python装饰器用法示例小结
2018/02/11 Python
解决python3中解压zip文件是文件名乱码的问题
2018/03/22 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
2018/10/11 Python
Python实现Linux监控的方法
2019/05/16 Python
python用quad、dblquad实现一维二维积分的实例详解
2019/11/20 Python
python中xlrd模块的使用详解
2021/02/01 Python
HTML5实时语音通话聊天MP3压缩传输3KB每秒
2019/08/28 HTML / CSS
乔丹诺(Giordano)酒庄德国官网:找到最好的意大利葡萄酒
2017/12/28 全球购物
海滩咖啡馆:Beach Cafe
2018/02/02 全球购物
孤独星球出版物:Lonely Planet Publications
2018/03/17 全球购物
工程造价专业大学生自荐信
2013/10/01 职场文书
自动化专业本科毕业生求职信
2013/10/20 职场文书
中青班党性分析材料
2014/02/16 职场文书
公积金具结保证书
2015/05/11 职场文书
写作技巧:如何撰写一份优秀的营销策划书
2019/08/13 职场文书
读《儒林外史》有感:少一些功利,多一些真诚
2020/01/19 职场文书
Python函数对象与闭包函数
2022/04/13 Python