第四章:第11节 PHP运算符-比较运算符✪,这节很重要

更新于:2023-07-12 10:26:12

1.png


比较运算符用来判断两个变量之间什么关系,是否相等,是否大于,是否小于。

返回值是布尔值,一般作用于需要条件判断的地方,比如if语句,在它的条件小括号里可以直接比较。


1.png

结果:

1.png


当进行大小比较时:小于、大于、等于


整数型、浮点型就不说了,没有异议,就按数字大小比较。下面我们具体分析下以下几种情况


1)当字符串大小比较时

1.png


结果:



1.png

总结下:


如果两边都是纯数字字符串,转为数字比较

如果一边有数字(整数型、浮点型),另一边转为数字比较。

如果有一边是字符串,另一边也是字符串或纯数字字符串,就按两边首个字符的ascii码对应的值比较,首字符一样,就往下比较,直到不一样分出大小。


细节:一边是浮点型字符串$a,一边是浮点型数字$b,$a务必用round函数精确转换成浮点型,不然有的时候两个小数看似一样,做判断时,却不一定相等。


2)当布尔值比较时

1.png

结果:

1.png


总结:如果两边有布尔值,均转为布尔值比较:规则:true > false


在实际开发中,主要用于数字、纯数字字符串比较,字符串、布尔值用得不多。


3)当进行相等比较时:等于、不等、全等、不全等


==:松散相等,比较的是两个数据“类型转换之后”是否有可能相等,也常常认为是“数据内容是否相同”

===:严格相等,全等,只有两个数据的类型和数据的内容都完全一致,才相等。

 

严重推荐参考手册〉〉附录〉〉类型比较表

1.png


1.png

举几个典型的例子:


1.png

 var_dump('0' == '');//false 也是很容易出错的


总结下:


1、有一边是布尔值,其他类型会转成布尔值。数字0、字符串''、'0'转成布尔值false,其他数字、字符串转成布尔值true。


2、数值与字符串比较,字符串会转成数值型 (这句很重要,适用于php7及以下版本) 。


3、字符串与字符串比较,会比较两个字符串(包括其中一方是数字字符串)是否一样,如果两边都是纯数字字符串,会做数字比较。


PHP 8 重要变动:比较数字字符串(numeric string)时,会按数字进行比较。 不是数字字符串时,将数字转化为字符串,按字符串比较。 0 == 'a' // false)


和数据变量比较大小一样,不同数据类型比较,会有一个类型的优先级:


布尔类型 > 数字类型(整数型、浮点型) > 字符串类型


两个数据变量做相等比较是非常常见的,大家一定要弄明白,不然很容易造成程序if语句出错的。最好是同一数据类型做相等比较,数字与数字,字符串与字符串,避免不同数据类型做相等比较。


数字比较时 谨防有数字字符串 最好对比较的两个变量强制转换为整数类型。


关于全等===,应该是很好理解的。整数型10与字符串10全等,返回布尔值假false。实际开发中,多用于场景:确定一个变量是布尔值false,而不是整数型0,空字符串。


全等===不是通用的比较运算符,不敢说只有PHP有这种比较运算符,反正在C、Java这样的强类型语言里,就没有全等===,因为它们不同数据类型是不能比较的。比如在C语言里,比较字符串是否一样,就不能用==,需要依靠其他方式做比较。


本节学习代码》》》