PHP位运算和逻辑运算,是一个符号写两遍这么简单吗?
引言
我们经常在程序流程中进行逻辑判断,与或非,用的是炉火纯青,相信你也不少用。那么在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 :-)
我是 @程序员小助手 ,持续分享编程知识,欢迎关注。
php和java相比,应该往哪个方向发展?
谢谢邀请!
首先,如果抛开应用场景来探讨编程语言是不合理的,另外编程语言的孰优孰劣也有不同的判断角度,所以需要从多个维度来进行分析。
Java和PHP语言都是目前IT行业内被广泛采用的编程语言,目前Java语言的应用场景集中在Web开发、大数据开发、Android开发和后端服务开发领域,而PHP语言则比较专注,主要应用于Web开发,但是PHP在Web开发领域的份额比较大,所以PHP的程序员基数也非常大。
从应用的范围来看,无疑Java语言具有一定的优势,而且Java语言凭借稳定的性能表现和较强的扩展能力是不少大型互联网平台的重要选择,从这个角度来看,似乎Java语言更有优势一些。
但是Java语言的问题也不少,比如Java在语法结构上没有PHP简洁,这直接导致了采用Java方案会加长开发周期,所以不少中小型项目往往会更愿意采用PHP语言。从程序员的角度来说,没有人愿意“复杂”,由于PHP语言在语法结构上的优势,使得PHP程序员对于PHP语言的“忠诚度”是比较高的,这就是为什么经常听说从Java开发转到PHP,或者从Java开发转到Python,但是很少听说PHP程序员转到Java。
当前在开发领域有明显的多极化发展趋势,从早期的前后端划分到现在的“大前端”概念、全栈开发概念、资源接口概念等都在各自的应用场景下得到了发展。对于编程语言的发展来说,如何迎合技术发展趋势是非常重要的。从发展趋势来看,未来PHP在Web开发领域将依然是最为重要的编程语言之一,而Java语言未来虽然依然会有广泛的应用,但是随着Python、JavaScript和Go等语言的发展,Java语言的应用场景会得到一定程度的压缩。
最后,如果要从事Web开发,那么就选择PHP,如果从事大数据和后端开发就选择Java。
我从事互联网行业多年,目前也在带计算机专业的研究生,主要的研究方向集中在大数据和人工智能领域,我会陆续写一些关于互联网技术方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。
如果有互联网方面的问题,或者考研方面的问题,都可以咨询我,谢谢!
php的标识符号由哪些符号组成?
数字,字母和下划线组成
php标量是什么意思,和变量有区别吗?
以下是有关PHP中变量的最重要知识。原文:codingdict.com/article/7820
PHP中的所有变量均以前导美元符号($)表示。
变量的值是最近赋值的值。
变量用=运算符分配,变量在左侧,表达式在右侧进行计算。
变量可以但不需要在赋值之前声明。
PHP中的变量没有内在类型 一个变量事先并不知道它是用来存储一个数字还是一串字符。
分配之前使用的变量具有默认值。
PHP在自动将类型从一个类型转换为另一个类型时做得很好。
PHP变量是类Perl的。
PHP总共有八种数据类型用于构建我们的变量 -
整数 是 整数 ,没有小数点,如4195。
双精度 是浮点数,如3.14159或49.1。
布尔 只有两个可能的值,无论是真或假。
NULL 是一个只有一个值的特殊类型:NULL。
字符串 是字符序列,如'PHP支持字符串操作'。
数组 是其他值的命名和索引集合。
对象 是程序员定义的类的实例,它可以打包特定于类的其他类型的值和函数。
资源 是持有PHP外部资源引用的特殊变量(如数据库连接)。
前五种是 简单类型 ,后两种(数组和对象)是复合的 复合类型可以打包任意类型的其他任意值,而简单类型则不能。
我们将在本章中仅解释简单的数据类型。数组和对象将分开解释。
即标量类型声明。标量类型声明有两个选项 原文:codingdict.com/article/7881
coercive 强制 强制是默认模式,不需要指定。
strict 严格 严格模式已经明确暗示。
功能参数的以下类型可以使用上述模式强制执行
intfloatboolstringinterfacesarraycallable‘和’用符号怎么表示?
&在英语里是and的意思
∑在数学里是连加求和符号
∩是取交集
∪是取并集,是将两个加在一起,应该也可以说是取和的意思吧