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 jQuery $.post $.ajax用法
Jul 09 Javascript
Jquery选择子控件"大于号"和" "区别介绍及使用示例
Jun 25 Javascript
js中关于一个分号的崩溃示例
Nov 11 Javascript
Jquery ajaxStart()与ajaxStop()方法(实例讲解)
Dec 18 Javascript
Node.js开源应用框架HapiJS介绍
Jan 14 Javascript
jQuery实现左右切换焦点图
Apr 03 Javascript
js操作cookie保存浏览记录的方法
Dec 25 Javascript
轻松实现js图片预览功能
Jan 18 Javascript
JavaScript对Json的增删改属性详解
Jun 02 Javascript
vue.js中v-on:textInput无法执行事件问题的解决过程
Jul 12 Javascript
如何检测JavaScript中的死循环示例详解
Aug 30 Javascript
10分钟学会js处理json的常用方法
Dec 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 魔术函数使用说明
2010/05/14 PHP
php max_execution_time执行时间问题
2011/07/17 PHP
php中define用法实例
2015/07/30 PHP
php 反斜杠处理函数addslashes()和stripslashes()实例详解
2016/12/25 PHP
jquery实现的一个简单进度条效果实例
2014/05/12 Javascript
使用AngularJS对路由进行安全性处理的方法
2015/06/18 Javascript
详解JavaScript逻辑Not运算符
2015/12/04 Javascript
jQuery动态改变多行文本框高度的方法
2016/09/07 Javascript
Vue数组更新及过滤排序功能
2017/08/10 Javascript
vue项目关闭eslint校验
2018/03/21 Javascript
利用js将ajax获取到的后台数据动态加载至网页中的方法
2018/08/08 Javascript
Vue实现页面添加水印功能
2019/11/09 Javascript
详解vue中在循环中使用@mouseenter 和 @mouseleave事件闪烁问题解决方法
2020/04/07 Javascript
jQuery 常用特效实例小结【显示与隐藏、淡入淡出、滑动、动画等】
2020/05/19 jQuery
微信小程序实现购物车功能
2020/11/18 Javascript
了不起的11个JavaScript代码重构最佳实践小结
2021/01/11 Javascript
对于Python中RawString的理解介绍
2016/07/07 Python
HTML中使用python屏蔽一些基本功能的方法
2017/07/07 Python
Python3 处理JSON的实例详解
2017/10/29 Python
对python制作自己的数据集实例讲解
2018/12/12 Python
Django 路由控制的实现
2019/07/17 Python
浅谈keras中的batch_dot,dot方法和TensorFlow的matmul
2020/06/18 Python
浅析两列自适应布局的3种思路
2016/05/03 HTML / CSS
美国最大的农村生活方式零售店:Tractor Supply Company(TSC)
2017/05/15 全球购物
香港卓悦化妆品官网:BONJOUR
2017/09/21 全球购物
印度低票价航空公司:GoAir
2017/10/11 全球购物
美国在线打印网站:Overnight Prints
2018/10/11 全球购物
口腔工艺技术专业毕业生自荐信
2013/09/27 职场文书
护理自荐信
2013/10/22 职场文书
学生自我评语大全
2014/04/18 职场文书
2014年女职工工作总结
2014/11/27 职场文书
先进个人事迹材料范文
2014/12/30 职场文书
岳庙导游词
2015/02/04 职场文书
清洁工工作总结
2015/08/11 职场文书
2019年怎样写好导游词?
2019/07/02 职场文书
使用Pytorch实现two-head(多输出)模型的操作
2021/05/28 Python