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 源码分析笔记(7) Queue
Jun 19 Javascript
40款非常棒的jQuery 插件和制作教程(系列二)
Nov 02 Javascript
js四舍五入数学函数round使用实例
May 09 Javascript
JavaScript实现同步于本地时间的动态时间显示方法
Feb 02 Javascript
jQuery实现点击表格单元格就可以编辑内容的方法【测试可用】
Aug 01 Javascript
详解Vue 方法与事件处理器
Jun 20 Javascript
JavaScript之Map和Set_动力节点Java学院整理
Jun 29 Javascript
基于BootStrap multiselect.js实现的下拉框联动效果
Jul 28 Javascript
微信小程序实现手势图案锁屏功能
Jan 30 Javascript
elementUI vue this.$confirm 和el-dialog 弹出框 移动 示例demo
Jul 03 Javascript
json字符串对象转换代码实例
Sep 28 Javascript
微信小程序网络请求实现过程解析
Nov 06 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
针对初学PHP者的疑难问答(1)
2006/10/09 PHP
深入理解PHP中的Session和Cookie
2013/06/21 PHP
PHP环境中Memcache的安装和使用
2015/11/05 PHP
php上传图片并压缩的实现方法
2015/12/22 PHP
PHP使用SWOOLE扩展实现定时同步 MySQL 数据
2017/04/09 PHP
php简单中奖算法(实例)
2017/08/15 PHP
AJAX跨域请求json数据的实现方法
2013/11/11 Javascript
ActiveX控件与Javascript之间的交互示例
2014/06/04 Javascript
extjs 分页使用jsp传递数据示例
2014/07/29 Javascript
Javascript学习笔记之相等符号与严格相等符号
2014/11/23 Javascript
javascript实现禁止复制网页内容汇总
2015/12/30 Javascript
jQuery实现的给图片点赞+1动画效果(附在线演示及demo源码下载)
2015/12/31 Javascript
三个js循环的关键字示例(for与while)
2016/02/16 Javascript
Bootstrap学习系列之使用 Bootstrap Typeahead 组件实现百度下拉效果
2016/07/07 Javascript
AngularJS利用Controller完成URL跳转
2016/08/09 Javascript
jQuery使用$获取对象后检查该对象是否存在的实现方法
2016/09/04 Javascript
微信小程序 支付功能开发错误总结
2017/02/21 Javascript
Angular2入门--架构总览
2017/03/29 Javascript
d3.js入门教程之数据绑定详解
2017/04/28 Javascript
原生JS获取元素的位置与尺寸实现方法
2017/10/18 Javascript
在create-react-app中使用sass的方法示例
2018/10/01 Javascript
vue3 源码解读之 time slicing的使用方法
2019/10/31 Javascript
JavaScript this关键字指向常用情况解析
2020/09/02 Javascript
python批量替换页眉页脚实例代码
2018/01/22 Python
Python基本数据结构与用法详解【列表、元组、集合、字典】
2019/03/23 Python
python Django编写接口并用Jmeter测试的方法
2019/07/31 Python
python根据多个文件名批量查找文件
2019/08/13 Python
python环境下安装opencv库的方法
2020/03/05 Python
"引用"与指针的区别是什么
2016/09/07 面试题
如何安装ruby on rails
2014/02/09 面试题
物理教育专业毕业生推荐信
2013/11/03 职场文书
行政人员岗位职责
2013/12/08 职场文书
中学生自我评价范文
2014/02/08 职场文书
小学语文教学经验交流材料
2014/06/02 职场文书
倡议书范文大全
2015/04/28 职场文书
《最终幻想14》6.01版本4月5日推出 追加新任务新道具
2022/04/03 其他游戏