开发者学堂课程【PHP 基础入门课程(上) :比较运算】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/709/detail/12603
比较运算
内容介绍:
一、了解比较运算的意义和工作原理
二、掌握常用比较运算符的使用
我们先思考这样一个问题,两个数,想知道谁大谁小,比如说两个人的年龄,那么此时我们就必须要进行一个比较,所以我们这里面程序里面就提供了较多的比较运算符,来帮助我们实现比较运算。
提问:如何知道两个数据的大小呢?
回答:比较运算。
一、了解比较运算的意义和工作原理
1、概念
比较运算:比较两个数据的大小或者长度,然后得出比较结果
- 用于两个表达式的比较,比较的结果通常是 true 或者 false
- >︰左边大于右边返回 true ,否则返回 false
- <:左边小于右边返回 true ,否则返回 false
- >=:左边大于或者等于右边返回 true ,否则返回 false
- <=:左边小于或者等于右边返回 true,否则返回 false
- <=>:左边大于右边返回1,等于右边返回0,小于右边返回-1\\
我们用这种的话,可以一次性代替前面的多种更加精确,但是,他可能对于我们的值,我们需要额外的去进行一些判定
- ==:左边等于右边返回 true ,否则返回 false \\等于这个地方要
特别注意的一点是比较两个相同,因为一个等于是负值。
你左右两边放两个变量,如果用一个等号是把右边的赋值给左边,用了两个系统才会知道,这是一种判定。所以这块儿我们要特别注意,写比较的时候一定要写两个。
- !=:左边不等于右边返回 true ,相等返回 false
- ===:左边等于右边,且两边数据类型一致返回 true ,否则返回
false \\这个地方比较特殊,是全等,表示左边要等于右边,而且两边数据的类型要相同。
如果值相同,类型相同,返回 ture ,如果只有值相同,类型不相同,返回 false ,他跟等号的区别在于他要考虑类型,那不全等于也是一样的。
- !==:左边不全等于右边返回 true,否则返回 false
二、掌握常用比较运算符的使用
1、示例
1 <?php
2
3 #比较运算
4
5 $a = 10;
6 $b= 5;
7 $c = '10';
8
9
10 #系统会自动转换成同一类型进行比较
11 echo '<pre> ';
12 var_dump($a > $b); #true
13 var dump($a ==$b); #false
14 var _dump($a==$c); #true
(值相同)
15 var_dump($a-= $c); #false
(类型不同)
那 18compare.php 发现 true false true false,跟我们前面运算的结果一样,说明我们的理解逻辑是没有问题的。
接下来,再看看所谓的飞船运算
16
17 var_dump($a <=> $b);
\\结果是 int{1}
18 var_dump($b <=> $a);
\\结果是 int{-1}
19 var_dump($a <=>$c);
\\结果是 int{0}
如果我们需要用到飞船运算的时候,我们是要根据这个结果,不能用简单的 ture 或 false 来判定他,用这种方式的话你会发现,不管是a大于b还是a小于b,它返回的是1和-1,而1和-1转化成布尔值他都是 ture ,所以此时不能直接这样判定。那么我们就需要用全等来进行一个比较。
20
21
22 var_dump(($a <=>$b) === 1);
\\结果是 bool{ture}
23 var_dump(($a <=>$b) >0);
\\结果是 bool{ture}
示例:
#定义数据
$a = 10;
#数字10
$b = 5 ;
$c = '10';
#字符串10
#基本比较运算
$res = $a > $b;
var_dump($res) ;
#布尔 true: 10 > 5,成立
#全等运算
$res = ($a == $c);
var_dump($res);
#布尔 true: 10 与'10'系统自动会转换成相同的格式比较,都是10,所以相等
$res = ($a === $c);
var_dump($res);
#布尔 false: 10与10值相同,但是10是数字,'10'是字符串,类型不同
#飞船运算
var_dump($a <=>$c);
#0:相等,10与10值相同,类型不同不影响
注意:
在 PHP 中比较运算比较特殊,通常系统会自动将类型转换成相同的然后进行比较,所以大家在使用==和===比较的时候,如果自己不够明确可以参照 PHP 操作手册中的类型比较表:PHP 操作手册->附录->PHP 类型比较表。
用==进行松散比较
用===进行严格比较
2、小结
1、比较运算就是比较两个数据的区别
2、飞船运算包含了大于、等于和小于三种运算
3、比较运算的结果普遍是 true 和 false,飞船运算符的结果除外
4、比较运算通常在实际开发中用于判定数据的有效性
- 数值有大小可比较
- 字符串:比较对应的 ASCIl 值
a. 大小写比较 ASCIl 值
b. 如果是相同字符串,谁第一个不同的大谁嬴
5、PHP 在进行比较时,会自动将不同类型转换成同一类型进行比较,所以这块需要特别注意
- 松散比较==:只比较值即可
- 严格比较===︰值和类型都比较