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的列表拖动排序实现代码
Oct 01 Javascript
js整数字符串转换为金额类型数据(示例代码)
Dec 26 Javascript
点击表单提交时出现jQuery没有权限的解决方法
Jul 23 Javascript
使用phantomjs进行网页抓取的实现代码
Sep 29 Javascript
jQuery实现选项联动轮播效果【附实例】
Apr 19 Javascript
javascript使用闭包模拟对象的私有属性和方法
Oct 05 Javascript
jQGrid Table操作列中点击【操作】按钮弹出按钮层的实现代码
Dec 05 Javascript
jQuery自定义元素右键点击事件(实现案例)
Apr 28 jQuery
JS实现给数组对象排序的方法分析
Jun 24 Javascript
js实现秒表计时器
Dec 16 Javascript
解决vue-photo-preview 异步图片放大失效的问题
Jul 29 Javascript
微信小程序自定义支持图片的弹窗
Dec 21 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 文件缓存的性能测试
2010/04/25 PHP
php设计模式 Mediator (中介者模式)
2011/06/26 PHP
JQuery中如何传递参数如click(),change()等具体实现
2013/04/28 Javascript
基于jquery的网站幻灯片切换效果焦点图代码
2013/09/15 Javascript
Javascript中的默认参数详解
2014/10/22 Javascript
DOM基础教程之使用DOM
2015/01/19 Javascript
javascript数据类型验证方法
2015/12/31 Javascript
简单三步实现报表页面集成天气
2016/12/15 Javascript
webpack入门+react环境配置
2017/02/08 Javascript
js输入框使用正则表达式校验输入内容的实例
2017/02/12 Javascript
Vue-cropper 图片裁剪的基本原理及思路讲解
2018/04/17 Javascript
Node.Js生成比特币地址代码解析
2018/04/21 Javascript
JS复杂判断的更优雅写法代码详解
2018/11/07 Javascript
[49:05]Newbee vs TNC 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python2.7的编码问题与解决方法
2016/10/04 Python
pyqt远程批量执行Linux命令程序的方法
2019/02/14 Python
python 堆和优先队列的使用详解
2019/03/05 Python
python xlwt如何设置单元格的自定义背景颜色
2019/09/03 Python
在pycharm中实现删除bookmark
2020/02/14 Python
Python爬虫爬取电影票房数据及图表展示操作示例
2020/03/27 Python
python Protobuf定义消息类型知识点讲解
2021/03/02 Python
html如何对span设置宽度
2019/10/30 HTML / CSS
全天然狗零食:Best Bully Sticks
2016/09/22 全球购物
优秀企业获奖感言
2014/02/01 职场文书
授权委托书样本
2014/04/03 职场文书
《金子》教学反思
2014/04/13 职场文书
个人合作协议书范本
2014/04/18 职场文书
班长竞选演讲稿
2014/04/24 职场文书
模特大赛策划方案
2014/05/28 职场文书
商务代表岗位职责
2015/02/15 职场文书
2015年信息宣传工作总结
2015/05/26 职场文书
学校财务管理制度
2015/08/04 职场文书
《风娃娃》教学反思
2016/02/18 职场文书
2019个人工作态度自我评价
2019/04/24 职场文书
如何开发一个渐进式Web应用程序PWA
2021/05/10 Javascript
MySQL系列之八 MySQL服务器变量
2021/07/02 MySQL