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 Split方法,indexOf方法、lastIndexOf 方法和substring 方法
Mar 21 Javascript
用JQuery 实现AJAX加载XML并解析的脚本
Jul 25 Javascript
aspx中利用js实现确认删除代码
Jul 22 Javascript
JavaScript(js)设置默认输入焦点(focus)
Dec 28 Javascript
jquery为页面增加快捷键示例
Jan 31 Javascript
Bootstrap基本插件学习笔记之轮播幻灯片(23)
Dec 08 Javascript
Bootstrap源码解读表单(2)
Dec 22 Javascript
微信小程序调用微信支付接口的实现方法
Apr 29 Javascript
一篇文章弄懂javascript中的执行栈与执行上下文
Aug 09 Javascript
vue中keep-alive内置组件缓存的实例代码
Apr 16 Javascript
原生js+canvas实现贪吃蛇效果
Aug 02 Javascript
vscode中使用npm安装babel的方法
Aug 02 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
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
2014/07/25 PHP
php变量与数组相互转换的方法(extract与compact)
2016/12/02 PHP
php实现将数据做成json的格式给前端使用
2018/08/21 PHP
PHP常见过waf webshell以及最简单的检测方法
2019/05/21 PHP
菜鸟学习JavaScript小实验之函数引用
2010/11/17 Javascript
JQuery扩展插件Validate 3通过参数设置错误信息
2011/09/05 Javascript
JavaScript显示当然日期和时间即年月日星期和时间
2013/10/29 Javascript
js的Prototype属性解释及常用方法
2014/05/08 Javascript
JS生成不重复随机数组的函数代码
2014/06/10 Javascript
javascript实现百度地图鼠标滑动事件显示、隐藏
2015/04/02 Javascript
javascript实现五星评价代码(源码下载)
2015/08/11 Javascript
深入浅析JavaScript中的3DES
2016/08/24 Javascript
Bootstrap基本模板的使用和理解1
2016/12/14 Javascript
seajs模块压缩问题与解决方法实例分析
2017/10/10 Javascript
Vue2.0实现调用摄像头进行拍照功能 exif.js实现图片上传功能
2018/04/28 Javascript
微信小程序仿朋友圈发布动态功能
2018/07/15 Javascript
菊花转动的jquery加载动画效果
2018/08/19 jQuery
EasyUI 数据表格datagrid列自适应内容宽度的实现
2019/07/18 Javascript
详解解决小程序中webview页面多层history返回问题
2019/08/20 Javascript
JS倒计时两种实现方式代码实例
2020/07/27 Javascript
[01:03:47]VP vs NewBee Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
Python群发邮件实例代码
2014/01/03 Python
Python PyQt5标准对话框用法示例
2017/08/23 Python
Python中Threading用法详解
2017/12/27 Python
使用 Python 处理 JSON 格式的数据
2019/07/22 Python
python实现FTP循环上传文件
2020/03/20 Python
python爬虫爬取图片的简单代码
2021/01/18 Python
迪奥官网:Dior.com
2018/12/04 全球购物
畜牧兽医本科生个人的自我评价
2013/10/11 职场文书
教师辞职报告范文
2014/01/20 职场文书
最新奶茶店创业计划书范文
2014/02/08 职场文书
文科毕业生自荐书范文
2014/04/17 职场文书
财务部会计岗位职责
2015/02/03 职场文书
2016年大学自主招生自荐信范文
2015/03/24 职场文书
PHP使用QR Code生成二维码实例
2021/07/07 PHP
排查Tomcat进程假死的问题
2022/05/06 Servers