自学PHP笔记(五) PHP运算符
首先我们需要了解运算符是什么,运算符是指的对变量、常量或者数据进行计算的一个符号,比如数学中学到的加减乘除等用来运算的代表符号,PHP中的运算符也是这样的,它可以通过一个或者多个值产生一个新的值,这就是运算符的作用,PHP中把运算符分为:算数运算符、赋值运算符、字符串运算符、位运算符、比较运算符、逻辑运算符、错误控制运算符和其他运算符。下面将对一系列运算符进行说明
1.算数运算符
算数运算符也就是我们数学公式中学到的四则运算符,也就是加减乘除,算数运算符主要用来数学计算
算数运算符 | 说明 |
---|---|
– | 减法,在某些特殊场合会用于取反,比如数值的负值 |
+ | 加法 |
* | 乘法 |
/ | 除法 |
% | 取余,也就是获取除法中的余数 |
【示例】 |
<?php
$a = 100;
$b = 200;
echo $a * $b;
echo $b / $a;
?>
运算结果分别为:20000
和2
2.赋值运算符
基本赋值运算符只有一个就是用=
表示,这个赋值运算符就是把右边的表达式赋给左边的运算符,也就是将左右两边的表达式相等,写法也就是常用变量赋值的方法
【示例】
<?php
$a = 100;
$b = $a + 100;
echo $a;
echo $b;
?>
输出结果分别为:100
和200
,可以看出$b
变量被赋值变量a
加上100,最后变量b
的值为200
赋值运算符除了基本的赋值运算符外,还有用于二元算数、数组集合和字符串运算的组合运算符,这里解释下什么是二元运算符:由两个元素形成第三个元素的一种规则,例如数的加法及乘法;更一般地,由两个集合形成第三个集合的产生方法或构成规则称为二次运算。这个是官方说法,其实就可以理解为两个或者多个表达式用运算符生成另外一个表达式,这就二次运算。
组合运算符 | 说明 | 示例 |
---|---|---|
.= | 先连接后赋值 | $a .= $b,就等于 $a = $a . $b |
+= | 先加后赋值 | $a += $b,就等于 $a = $a + $b |
-= | 先减后赋值 | $a -= $b,就等于 $a = $a – $b |
*= | 先乘后赋值 | $a *= $b,就等于 $a = $a * $b |
/= | 先除后赋值 | $a /= $b,就等于 $a = $a / $b |
【示例】 |
<?php
$a = 100;
$b = 200;
$a += $b;
echo $a;
?>
输出结果为:300
3. 字符串运算符
字符串运算符一开始我在想字符串还能运算?难不成还能A+B=C啊,后来通过一步步了解发现并不是那么回事,字符串的运算符就是将多个不同的字符表达式连接到一起,也就是将两个值进行合并。
字符串运算符只有两个,一个是.
连接运算符,也就是将左右两边的字符串合表达式并为一个字符串表达式。另外一个就是连接赋值运算符,这个类似于组合运算符符中的先连接后赋值,使用.=
进行表示
【示例】
<?php
$a = "hello";
$b = " word";
echo $a . $b;
$a .= $b;
echo $a;
?>
输出结果是一致的,输出结果为hello word
4.位运算符
这个我也是没搞太明白,有知道的大神可以给几个提示或者说明。下面我把PHP的位运算符做了一个列表:
位运算符 | 说明 |
---|---|
& | 按位与(And) |
| | 按位或(Or) |
^ | 按位异或(Xor) |
~ | 按位非(Not) |
<< | 左移 |
>> | 右移 |
就这些啦,希望大家可以补充下此栏,私聊发我,我会补充到这里,提前谢谢大家啦 |
5.比较运算符
这个比较运算符理解比较简单,就是将多个表达式进行对比,返回结果位布尔值,如果比较结果为真则返回true,如果比较结果为假则返回false,这个运算符大部分会用在流程控制中,比较表达式。
比较运算符 | 说明 |
---|---|
== | 判断是否相等,注意这个不会判断数据类型 |
=== | 判断是否相等,注意数据类型不同也会返回false |
!= | 不等于 |
<> | 不等于 |
!== | 非全等,注意会判读数据类型的 |
< | 小于 |
> | 大于 |
<= | 小于等于 |
>= | 大于等于 |
<=> | 组合比较,当左侧值大于右侧值会返回大于0的结果,反之则返回小于0的结果 |
?? | NULL合并操作符,从左往右第一个存在且不为NULL的操作数,如果没有定义且不为NULL则返回NULL |
【注意】在整数和字符串进行比较时,字符串会被转换成整数进行比较,比较字符串时,则作为整数进行比较。 | |
【示例】 |
<?php
var_dump(1 == "a");
var_dump(1==="a");
var_dump(1!=="a");
?>
输出结果为:第一个输出结果为bool(false)
,第二个输出结果为bool(false)
,第三个输出结果为bool(true)
6.逻辑运算符
这个逻辑运算符用来组合逻辑运算符的结果,每个编程语言都离不开的哦,多数用来做判断,多于流程控制一起使用
逻辑运算符 | 说明 |
---|---|
and | 逻辑与,多个表达式都为真才会返回true |
&& | 逻辑与,与and一致 |
or | 逻辑或,多个表达式一个为真就会被认为是真的 |
|| | 逻辑或,与or一致 |
xor | 逻辑异或,如果一个表达式为真另一个为假,则会返回true |
! | 逻辑非(取反),如果表达式为真,则返回false |
【示例】判断变量a和b是否都是1 |
<?php
$a = 1;
$b = 2;
if ($a and $b == 1){
echo "两个变量都是1哦";
}else{
echo "有一个变量不是1哦";
}
?>
输出结果为:有一个变量不是1哦
7.错误控制运算符
这个错误控制运算符就是为了不在前端输出错误信息或者是为了武略某些错误而设置的运算符,错误运算符时使用@
表示,只需要在表达式前面加上错误控制运算符即可,如果你激活了track_errors
特性,则表达式的错误信息都会保存至$php_errormsg
变量中。
【示例】
<?php
$a =1 / 0;
?>
执行上面代码会产生一个异常报错,错误信息会在浏览器中展示,避免这种错误信息展示在浏览器当中你就可以使用错误控制运算符
<?php
$a = @(1 / 0);
?>
执行上面代码会发现之前在浏览器当中显示的错误信息不见了
【注意】错误控制运算符只对表达式有效,如果能从某处获取到值,就能在他的前面加上错误控制运算符,可以把他放在变量、函数、incloud()
调用、常量等之前,但是要避免把他放在函数或类定义之前,也不能用在条件结构前
8.其他运算符
1. 三元运算符
三元运算符说白了就是if-else
,也是用来判断不同的表达式的,唯一不同的就是全写在一行里面,不需要分开写到多行,但是我还是建议大家使用if-else
结构语句。
【语法】
(expr1)?(expr2):(expr3)
**解释:**当expr1表达式为真时,则执行expr2表达式,并返回它的值,否则就会执行expr3表达式,并返回其值。
上面运算也可以直接省略expr2表达式,直接执行expr3。
(expr1) ?: (expr3)
**解释:**当expr1表达式为真时,直接返回expr1值,否则返回expr3的值。
【示例】这个示例用来判断这个相邻两个变量的值。
<?php
$a = 1;
$b = 2;
$c = 3;
$d = 4;
echo $a<$b?'A':$b<$c?'B':$c<$d?'C':'D';
?>
执行上面代码返回值C
哎最烦解释这种一行写下来的条件结构,看起来很复杂,稍不留神就理解不了,下面我拆开给大家看应该就觉得比较简单了,如果还是觉得很难理解的话,我建议大家直接跳过这一步,直接看后面的if-else
#第一步判断$a和$b,返回结果"A"
echo $a < $b ? 'A' : $b;
#第二步判断$b和$c,返回结果"B"
echo $b < $c ? 'B' : $d;
#第三步判断$c和$d,返回结果"C"
ehoc $c < $d ? 'C' : 'D';
最后给大家上个流程图吧
Created with Raphaël 2.3.0
开始
$a < $b
$b < $c
$c < $d
C
D
B
A
yes
no
yes
no
yes
no
这样应该看起来就简单很多了,这样就方便判断了,如果还是不行,那就跳过吧,不重要
2. 递增和递减运算符
这个递增和递减说起来就比较简单了,比起上面的三元运算简单多了,递增就是每执行一次都会加1,递减就是每执行一次都会减1,这个运算符有下面几种表示方法。
运算符 | 说明 |
---|---|
++$a | 返回$a+1的值 |
$a++ | 返回$a的值,然后再加1 |
–$a | 返回$a-1的值 |
$a– | 返回$a的值,然后再减1 |
注意这里的减号是两个不是一个 | |
这种递增递减的运算符多数用在循环结构当中。 | |
【递增示例1】 |
<?php
for ($i = 0; $i++ < 10;){
echo $i." ";
}
?>
输出结果为:1 2 3 4 5 6 7 8 9 10
【递增示例2】
<?php
for ($i = 0; ++$i < 10;){
echo $i." ";
}
?>
输出结果为:1 2 3 4 5 6 7 8 9
【递减示例1】
<?php
for ($i = 10; $i-- > 1;){
echo $i." ";
}
?>
输出结果为:9 8 7 6 5 4 3 2 1
【递减示例2】
<?php
for ($i = 10; --$i > 1;){
echo $i." ";
}
?>
输出结果为:9 8 7 6 5 4 3 2
9.运算符的优先级和结合方向
运算符的优先级其实就是指的执行顺序,哪一个优先执行哪一个后执行,在数学四则运算中,先算乘除后算加减,同样在PHP中肯定也是有这种执行顺序的。
在PHP当中运算符所遵循的运算顺序为:优先级高的操作先执行,优先级低的操作后执行,同一优先级按照从左向右顺序依次执行。
在PHP中也有小括号的先运算的说法,有小括号先执行小括号里面的表达式,然后再执行其他的。