PHP入坑之 运算符
1年前
阅读 1134
评论 0
喜欢 0
### 1、什么是PHP运算符
1、运算符,顾名思义就是用来进行一些条件比较、算术计算、逻辑变更等的符号集合。
2、PHP常用的运算符,主要有7大类,分别为:算数运算符、赋值运算符、字符串运算符、递增/递减运算符、比较运算符、逻辑运算符、数组运算符。
注意:由于数组的知识点较为复杂,所以关于数组运算符的教程会放在之后教程中。
####A、算数运算符
主要用于加、减、乘、除四则计算,和取余数,这5大算术运算。
|运算符|名称|例子|结果|
|:--:|:--:|:--:|:--:|
|+|加法|$x + $y|$x 与 $y 求和|
|-|减法|$x - $y|$x 与 $y 的差数|
|*|乘法|$x * $y|$x 与 $y 的乘积|
|/|除法|$x / $y|$x 与 $y 的商数|
|%|模数|$x % $y|$x 除 $y 的余数|
```php
$x = 10;
$y = 6;
echo ($x + $y); // 输出 16
echo ($x - $y); // 输出 4
echo ($x * $y); // 输出 60
echo ($x / $y); // 输出 1.6666666666667
echo ($x % $y); // 输出 4
```
####B、赋值运算符
主要用于变量间的组合操作,主要依赖`=`号作为基础运算符,`=`号也是最常用的赋值运算符之一。
|运算符|名称|赋值|等同于|结果|
|:---:|:---:|:---:|:---:|:---:|
|=|基础赋值|$x = 'hello world'||左边变量 会获得赋值内容 'hello world'|
|+=|加等于|$x += $y|$x = $x + $y|左变量 与 右变量加法运算之后,重新赋值给左变量|
|-=|减等于|$x -= $y|$x = $x - $y|左变量 与 右变量减法运算之后,重新赋值给左变量|
|*=|乘等于|$x *= $y|$x = $x * $y|左变量 与 右变量乘法运算之后,重新赋值给左变量|
|/=|除等于|$x /= $y|$x = $x / $y|左变量 与 右变量除法运算之后,重新赋值给左变量|
|%=|取余等于|$x %= $y|$x = $x % $y|左变量 与 右变量相除,取得余数结果后,重新赋值给左变量|
```php
$x=10;
echo $x; // 输出 10
$y=20;
$y += 100;
echo $y; // 输出 120
$z=50;
$z -= 25;
echo $z; // 输出 25
$i=5;
$i *= 6;
echo $i; // 输出 30
$j=10;
$j /= 5;
echo $j; // 输出 2
$k=15;
$k %= 4;
echo $k; // 输出 3
```
####C、字符串运算符
顾名思义,字符串运算符就是专门只针对字符串,进行操作使用的一些特殊符号组合;
|运算符|名称|赋值|结果|
|:---:|:---:|:---:|:---:|
|.|字符串连接(同行)|$x = 'hello' .' '. 'world'|同一行代码里,可以连续链接多段字符串|
|.=|字符串链接(分段)|$x = 'hello';$x .= ' ';$x .= 'world';|为了代码的美化性、可维护性和可开发性,代替同行链接,所衍生出来的分段链接运算符|
```php
$a = 'hello' .' '. 'world';
echo $a; // 输出 hello world
$x = 'hello';
$x .= ' ';
$x .= 'world';
echo $x; // 输出 hello world
```
>老师提醒:在使用 `.=` 运算符之前,其对应的变量必须已经创建,如上述代码中的 `$x` 变量,否则PHP将会提示该变量不存在。
####D、递增/递减运算符
该运算符是算术运算符中,`+`、`-`算法的一种衍生运算符,其主要特点是在与运算符最后返回的结果与算术运算符有所不同。
|运算符|名称|结果|
|:---:|:---:|:---:|
|++$i|先+1,后返回|$i+1,最后再返回相加之后的$i|
|$i++|先返回,后+1|先返回$i的内容,最后$i再+1|
|--$i|先-1,后返回|$i-1,最后再返回相减之后的$i|
|$i--|先返回,后-1|先返回$i的内容,最后$i再-1|
```php
$x = 10;
echo ++$x; // 输出 11
$y = 10;
echo $y++; // 输出 10
$z = 5;
echo --$z; // 输出 4
$i = 5;
echo $i--; // 输出 5
```
####E、比较运算符
该运算符是针对两个值(数字或字符串)的比较运算,如:
`$i 大于 $x`
`$i 绝对等于 $x`
等比较运算。
|运算符|名称|例子|结果|
|:---:|:---:|:---:|:---:|
|==|等于|$x == $y|如果 $x 等于 $y,则返回 true。|
|===|全等(连数据类型都相同|)$x === $y|如果 $x 等于 $y,且它们类型相同,则返回 true。|
|!=|不等于|$x != $y|如果 $x 不等于 $y,则返回 true。|
|<>|不等于|$x <> $y|如果 $x 不等于 $y,则返回 true。|
|!==|不全等(连数据类型都不相同)|$x !== $y|如果 $x 不等于 $y,或它们类型不相同,则返回 true。|
|>|大于|$x > $y|如果 $x 大于 $y,则返回 true。|
|
|>=|大于或等于|$x >= $y|如果 $x 大于或者等于 $y,则返回 true.|
|<=|小于或等于|$x <= $y|如果 $x 小于或者等于 $y,则返回 true。|
```php
$x = 100;
$y = '100';
# 比较 $x与$y 是否相等,由于==是不会限制数据类型,所以运算符成立,结果返回true
var_dump($x == $y);
# 比较 $x与$y 是否完全相等,由于===是严格限制数据类型,所以运算符不成立,结果返回false
var_dump($x === $y);
# 比较 $x 是否不等于 $y,由于!=是不会限制数据类型,所以运算符不成立,结果返回false
var_dump($x != $y);
# 比较 $x 是否绝对不等于 $y,由于!==是严格限制数据类型,所以运算符成立,结果返回true
var_dump($x !== $y);
```
####F、PHP 逻辑运算符
逻辑运算符,是用于组成一条两边表达式,是按照从左到右顺序进行运算。例如,表达:
`$x==1` 并且 `$y==2`
`$x==1` 或者 `$x==2`
这类表达式中的,并且、或者,就是逻辑运算符的作用。
|运算符|名称|例子|结果|
|:---:|:---:|:---:|:---:|
|and|与|$x and $y|如果 $x 和 $y 都为 true,则返回 true。|
|or|或|$x or $y|如果 $x 和 $y 至少有一个为 true,则返回 true。|
|xor|异或|$x xor $y|如果 $x 和 $y 有且仅有一个为 true,则返回 true。|
|&&|与|$x && $y|如果 $x 和 $y 都为 true,则返回 true。|
|!|非|!$x|如果 $x 不为 true,则返回 true。|
还有一条打不出,就这样显示吧
```
运算符名称例子 结果
|| 或$x || $y如果 $x 和 $y 至少有一个为 true,则返回 true。
```
> 老师提醒:由于逻辑运算符需要结合`if`判断语句,才好进行实战理解,所以该运算符暂时不做示例代码演示;不过同学们还是要熟记该类运算符下,所有运算符号对应的作用。
####G、运算符的优先级
该优先级是指,PHP所有运算符中,哪一些运算符在混搭使用的过程中,最优先执行,例如下面的代码:
```php
$A = true;
$B = false;
$C = $A and $B;
# 由于 = 的优先级比and要高,所以执行顺序应该是:$C 先获得赋值 $A,最后$A再和$B做and运算
var_dump($C); // 输出true
# 由于 && 的优先级比 = 的优先级高,所以执行顺序应该是:$A和$B先做&&运算,最后再将结果返回,赋值给$D
$D = $A && $B;
var_dump($D); // 输出false
```
下面老师总结出一张表,列出了运算符的优先级顺序,越靠上的优先级越高,同一行的优先级相同。
相同优先级的使用结合性进行分组处理。
|结合性|运算符|额外信息|
|:---:|:---:|:---:|
|左|[|数组|
|右|++、--|自增/自减|
|右|!|逻辑运算|
|左|*、/、%|算术|
|左|+、–、.|算术和字符串|
|左|<>|按位运算|
|不能结合|、>=|比较运算|
|不能结合|==、!=、===、!==、<>|比较运算|
|左|&|按位运算和引用|
|左|^|按位运算|
|左|一个竖杠|按位运算|
|左|&&|逻辑运算|
|左|两个竖杠|逻辑运算|
|左|?:|三元条件选择|
|右|=、+=、-=、*=、/=、.=、%=、&=|赋值|
|左|and|逻辑运算|
|左|xor|逻辑运算|
|左|or|逻辑运算|
|左|,|很多使用|
> 老师提醒:慎重使用`and`, `or`和`xor`的逻辑运算符, 避免和赋值号以及`&&`和`||`一起用, 以免发生不必要的逻辑错误.
© 著作权归作者所有