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获取地址栏参数
Dec 22 Javascript
JavaScript高级程序设计 读书笔记之九 本地对象Array
Feb 27 Javascript
node.js使用nodemailer发送邮件实例
Mar 10 Javascript
轻松学习jQuery插件EasyUI EasyUI实现树形网络基本操作(2)
Nov 30 Javascript
JavaScript脚本库编写的方法
Dec 09 Javascript
使用vue.js开发时一些注意事项
Apr 27 Javascript
js实现文字跑马灯效果
Feb 23 Javascript
js实现二级导航功能
Mar 03 Javascript
深入理解Vue Computed计算属性原理
May 29 Javascript
vue采用EventBus实现跨组件通信及注意事项小结
Jun 14 Javascript
VUE.js实现动态设置输入框disabled属性
Oct 28 Javascript
jquery将信息遍历到界面上实例代码
Jan 21 jQuery
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.ini中文版(1)
2006/10/09 PHP
ThinkPHP连接数据库及主从数据库的设置教程
2014/08/22 PHP
php中file_get_contents与curl性能比较分析
2014/11/08 PHP
解决Laravel blade模板转义html标签的问题
2019/09/03 PHP
JS面向对象编程 for Cookie
2010/09/19 Javascript
jquery 插件学习(五)
2012/08/06 Javascript
firefox下jQuery UI Autocomplete 1.8.*中文输入修正方法
2012/09/19 Javascript
当某个文本框成为焦点时即清除文本框内容
2014/04/28 Javascript
JavaScript编写推箱子游戏
2015/07/07 Javascript
jquery限定文本框只能输入数字(整数和小数)
2016/01/08 Javascript
jQuery滚动插件scrollable.js用法分析
2017/05/25 jQuery
微信小程序picker组件简单用法示例【附demo源码下载】
2017/12/05 Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
2018/01/23 Javascript
实例学习JavaScript读取和写入cookie
2018/01/29 Javascript
解决layui 三级联动下拉框更新时回显的问题
2019/09/03 Javascript
[01:13:46]iG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[51:53]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第二场 11.01
2020/11/02 DOTA
Python制作简单的网页爬虫
2015/11/22 Python
Python2随机数列生成器简单实例
2017/09/04 Python
Python实现邮件的批量发送的示例代码
2018/01/23 Python
Python3.6实现带有简单界面的有道翻译小程序
2019/04/16 Python
selenium+python环境配置教程详解
2019/05/28 Python
Python 日志logging模块用法简单示例
2019/10/18 Python
解决pymysql cursor.fetchall() 获取不到数据的问题
2020/05/15 Python
Python Socket多线程并发原理及实现
2020/12/11 Python
Diamondback自行车:拥有你的冒险
2019/04/22 全球购物
New Balance德国官方网站:购买鞋子和服装
2019/08/31 全球购物
幼师岗位求职简历的自荐信格式
2013/09/21 职场文书
经理管理专业自荐信范文
2013/12/31 职场文书
本科毕业生求职自荐信
2014/02/03 职场文书
在职证明书模板
2015/06/15 职场文书
学校少先队工作总结
2015/08/12 职场文书
三严三实学习心得体会(精选N篇)
2016/01/05 职场文书
windows11怎么查看wifi密码? win11查看wifi密码的技巧
2021/11/21 数码科技
Win11快速关闭所有广告推荐
2022/04/19 数码科技
分享几个实用的CSS代码块
2022/06/10 HTML / CSS