趣文网 > 作文大全

3分钟短文|PHP位运算和逻辑运算 一个符号写两遍这么简单?

2020-11-25 02:50:01
相关推荐

引言

我们经常在程序流程中进行逻辑判断,与或非,用的是炉火纯青,相信你也不少用。那么在PHP中,有两个操作符非常接近,就是 | 和 ||,那么他们有什么区别呢?

本文就从几个小栗子,说一说逻辑运算符,和位运算符那些恩爱纠缠。

学习时间

正好比PHP内的 & 和 && 的关系一样,双符号表示“短路”操作。什么意思呢,就好比下面这个条件判断:

if(condition1 || condition2 || condition3)

如果 condition1 = true,那么后面的两个condition根本不会进行检查。效率是不是顿时高了起来?

假如写成 | ,像下面这样的判断逻辑

if(condition1 | condition2 | condition3)

这个判断会把 condition1,2,3 挨个执行一遍,不管 condition1到底是不是true。是不是有点浪费资源了!

所以说,不使用“短路”操作符,程序上下文是有一定风险的。比如下面的例子,检查某个对象是否为空,且检查其某个属性值满足某个条件:

if($class != null && $class->someVar < 20)

上面的写法,如果 $class 本身就是 null,那么直接熔断;只有 $class 不为空,才会执行接下来的属性检查条件。

如果是一个 & 号,会出现什么情况呢?

如果 $class = null,直接抛出 NullReferenceException 异常;如果 $class != null,第一个条件通过,如果属性 someVar 不存在,则抛出method不存在异常;所以说,没有短路机制,这个判断条件跑偏了。

深入学习

其实对于 | 或 &,在PHP中是作为位操作符使用。下图是PHP位操作符的意义:

位操作应用于二进制数据操作,比如:

A = 01010101 B = 10101010 A | B = 11111111

当然也可以是任何类型的数据,因为底层还是字节码的按位操作。

写在最后

本文通过操作符 | 和 || 的区别与使用,使大家能够明白,位操作符与逻辑运算符的本质区别。以及逻辑运算符所具有的“短路”机制。

位操作在数据运算中很高效,但是不直观。使用的时候要充分测试。

Happy coding :-)

我是 @程序员小助手 ,持续分享编程知识,欢迎关注。

阅读剩余内容
网友评论
相关内容
延伸阅读
小编推荐

大家都在看

醋溜土豆丝作文 随便的作文 一件小事作文700字 这也是课堂作文400字 写人作文500字初中 我的春天作文 故乡之秋作文 瞬间的温暖作文600字 炒菜的作文300字 我长大了250字作文 关于春天的作文800字 我们班的英语达人作文 关于敬佩一个人的作文 我的什么梦作文400字 读你作文开头 写景作文200字初中 植物的精神品质作文 我的梦想是律师作文 爸爸的秘密作文 以感谢为主题的作文 你想出名吗英语作文 这件事我做对了作文400字 关于中秋节的英语作文 海底海龟作文 描写桔子的作文三年级 有关记叙文的作文 读你作文800字 最感谢的人作文 后悔的眼泪作文 风筝的故事作文