香雨站

用户名  找回密码
 立即注册
帖子
热搜: 活动 交友 discuz
查看: 105|回复: 0

PHP从入门到精通—PHP编程基础-PHP运算符、表达式与 ...

[复制链接]

2

主题

4

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2023-1-17 14:53:19 | 显示全部楼层 |阅读模式
已经介绍了PHP常量、数据类型转换(PHP从入门到精通—PHP编程基础-PHP基本语法、变量、 常量),下面讲介绍剩余的运算符的使用、运算符的优先级、表达式与语句及流程控制语句的使用。



PHP运算符
运算符(也称操作符)是用来对数据进行操作的符号,操作的数据称为操作数。运算符根据操作数的个数可分为一元运算符、二元运算符、三元运算符。运算符根据其功能可分为算术运算符、赋值运算符、比较运算符、逻辑运算符等。下面介绍相应的运算符和优先级。
Ø 算术运算符
算术运算符用来处理简单的算术运算,包括加、减、乘、除、取余等,具体如表所示。
运算符说明示例结果
+5 + 27
-5 - 23
*5 * 210
/5 / 22.5
%取余5 % 21
在表中,前四种运算符与数学所学的运算符相同,最后一种运算符就是数学中的求余数。在使用算术运算符时,需注意以下几点:
l 当有多种运算符参与运算时,先乘除,后加减。
l 当有浮点型数据参与前四种运算时,运算结果的数据类型为浮点型。
l 当进行取余运算时,运算结果的正负取决于左操作数的正负。
Ø 赋值运算符
在前面章节的学习中,程序中已多次使用赋值运算符。它的作用就是将常量、变量或表达式的值赋给某一个变量。除此之外,还有几种特殊的赋值运算符,如所示。
表2.1 赋值运算符
运算符说明示例结果
=赋值$a = 5; $b =2;$a为5,$b 为2
+=加等于$a = 5; $b =2; $a += $b;$a为7,$b 为2
-=减等于$a = 5; $b =2; $a -= $b;$a为3,$b 为2
*=乘等于$a = 5; $b =2; $a *= $b;$a为10,$b 为2
/=除等于$a = 5; $b =2; $a /= $b;$a为2.5,$b 为2
%=余等于$a = 5; $b =2; $a %= $b;$a为1,$b 为2
.=连接等于$a = 'q'; $b = 'f'; $a .= $b;$a为'qf',$b 为'f'
Ø 字符串运算符
.称为字符串运算符,可以将两个字符串连接成一个新的字符串。在前面也曾使用过,此处需注意它与“+”运算符的区别。
Ø 自加/自减运算符
自加运算符(++)使其操作数递增1,自减运算符(--)使其操作数递减1。自加、自减运算符可以在变量的前面,也可以在变量的后面,在变量前面的称为前置,在变量后面的称为后置,如表所示。
示例说明结果
$a = 2; $b = ++$a;前置自加,先自加,再参与其他运算$a为3,$b 为3
$a = 2; $b = $a++;后置自加,先参与其他运算,再自加$a为3,$b 为2
$a = 2; $b = --$a;前置自减,先自减,再参与其他运算$a为1,$b 为1
$a = 2; $b = $a--;后置自减,先参与其他运算,再自减$a为1,$b 为2
表中示例的数据类型是整型。
PHP还可以对字符串作自加操作,并且只支持纯字母(a~z和A~Z)。
Ø 比较运算符
比较运算符就是对变量或表达式的结果进行比较。如果比较结果为真,则返回true,否则返回false,具体如表所示。
运算符说明示例结果
==等于5 == 3false
!=、<>不等于5 != 3true
===恒等5 === 5true
!==不恒等5 !== 5.0true
>大于5 > 3true
>=大于等于5 >= 3true
<小于5 < 3false
<=小于等于5 <= 3false
在表中,注意“==”与“===”的区别。当使用“==”比较其两边的操作数时,先将两个操作数自动转换为相同类型,然后两个操作数的值相等就返回true;而当使用“===”比较其两边的操作数时,只有当两个操作数的值相等并且类型相同,才会返回true。
Ø 逻辑运算符
逻辑运算符只能对布尔型数据进行运算,运算结果也为布尔型,具体如表所示。
运算符说明示例结果
&&$a && $b$a与$b都为true,结果为true,否则为false
||$a || $b$a与$b至少有一个为true,结果为true,否则为false
!!$a$a为false,结果为true;$a为true,结果为false
xor异或$a xor $b$a与$b的值一个为true,一个为false,结果为true,否则为false
and$a and $b功能与&&相同,但优先级较低
or$a or $b功能与||相同,但优先级较低
在表中,逻辑运算符虽然只能操作布尔型数据,但很少直接操作布尔型数据,通常都是使用比较运算符返回的结果作为逻辑运算符的操作数。此外,逻辑运算符也经常出现在条件语句和循环语句中。
Ø 三元运算符
三元运算符作用于三个操作数之间,其语法格式如下:


上述语句表示,如果表达式1为true,则返回表达式2的值,否则返回表达式3的值,具体示例如下:


示例中,程序执行第3行语句时,$a++的结果为false,此时将$b的值赋值给$c。注意最终$a的值为1,$b与$c的值为4。
此外,当表达式1与表达式2相同时,还可以写成如下格式:
表达式1 ?: 表达式3
上述语句表示,如果表达式1为true,则返回表达式1的值,否则返回表达式3的值,具体示例如下:


示例中,程序执行第2行语句时,$a++的结果为false,此时将2赋值给$b。
Ø NULL合并运算符
该运算符是PHP 7新增的运算符,其语法格式如下:
表达式1 ?? 表达式2
上述语句表示,如果表达式1存在值且不为NULL,则返回该值,否则返回表达式2的值,具体示例如下:
$a = NULL;
$b = $a ?? 1 + 1;
示例中,程序执行第2行时,将1+1的值赋值给$b。
Ø 组合比较运算符
该运算符也是PHP 7新增的运算符,其语法格式如下:
表达式1 <=> 表达式2
上述语句表示,当表达式1小于、等于或大于表达式2时,分别返回-1、0或1。
Ø 位运算符
位运算符是指对二进制位从低位到高位对齐后进行运算,具体如表所示。
运算符说明示例结果
&按位与$a & $b$a与$b对应二进制的每一位进行与操作后的结果
|按位或$a | $b$a与$b对应二进制的每一位进行或操作后的结果
^按位异或$a ^ $b$a与$b对应二进制的每一位进行异或操作后的结果
~按位取反~$a$a对应二进制的每一位进行非操作后的结果
<<向左移位$a << $b将$a对应二进制的每一位左移$b位,右边移空的部分补0
>>向右移位$a >> $b将$a对应二进制的每一位右移$b位,左边移空的部分补0
虽然运用位运算可以完成一些底层的系统程序设计,但PHP很少参与计算机底层编程,因此这里只需了解位运算即可。
Ø 其他运算符
PHP中除了上述介绍的几种运算符外,还有一些其他运算符,具体如表所示。
运算符说明作用
``执行运算符将反引号中的内容作为命令来执行
@错误控制运算符表达式可能产生的错误信息不显示
=>数组下标访问符指定数组的键与值
->对象成员访问符访问对象中的成员属性或方法
instanceof类型运算符用来测定一个对象是否来自某个类
在表中出现的运算符将在后面的章节中使用到,此处只需知道存在这几个运算符即可。
Ø 运算符的优先级
运算符的优先级是指在多种运算符参与运算的表达式中优先计算哪个运算符,与算术运算中“先乘除,后加减”是一样的。如果运算符的优先级相同,则根据结合方向进行计算,如表所示。
级别运算符结合方向
1new
2[从左至右
3++、--、~、(int)、(float)、(string)、(array)、(object)、@从右至左
4instanceof
5!从右至左
6*、/、%从左至右
7+、-、.
8<<、>>
9==、!=、===、!==、<>
10&从左至右
11^
12|
13&&
14||
15?:
16=、+=、-=、*=、/=、.=、%=、&=、|=、^=、<<=、>>=从右至左
17and从左至右
18xor
19or
20,
PHP会根据表中运算符的优先级确定表达式的求值顺序,同时还可以使用圆括号“()”来控制运算顺序。任何圆括号内的运算将最先计算,因此编程者不需要刻意记忆运算符的优先级顺序,而是通过圆括号来改变优先级以达到目地。
Ø 表达式与语句
表达式是用于计算值的操作,返回一个值,以下是常见的几种表达式:
l 常量、变量,如3.14、$a。
l 由运算符和操作数组成的式子,如$a++、$a + 5、$a = func()。
此处需注意每个表达式都有自己的值,即表达式都有运算结果。在表达式的后面加上一个分号就是语句,因此通常使用分号来区分表达式与语句。
流程控制语句
PHP程序设计中流程控制结构包括顺序结构、选择结构和循环结构。它们都是通过控制语句实现的,其中顺序结构不需要特殊的语句,选择结构需要通过条件语句实现,循环结构需要循环语句实现。除此之外,有时程序需要无条件的执行一些操作,这时需要用到转移语句。
Ø 条件语句
条件语句可以给定一个判断条件,并在程序执行过程中判断该条件是否成立。程序根据判断结果执行不同的操作,这样就改变代码的执行顺序,从而实现更多功能。例如,用户登录某款软件,若帐号与密码都输入正确,则显示登录成功界面,否则显示登录失败界面,具体如图所示。


PHP中条件语句有if语句、if-else语句、if-elseif-else语句、switch语句。接下来,本节将针对这些条件语句进行详细讲解。
1.if语句
if语句用于在程序中有条件地执行某些语句,其语法格式如下:


如果条件表达式的值为真,则执行其后的语句块,否则不执行该语句块。if语句的执行流程,如图所示。



2.if-else语句
if-else语句用于根据条件表达式的值决定执行哪块代码,其语法格式如下:


如果条件表达式的值为真,则执行其后的语句块1,否则执行语句块2。if-else语句的执行流程,如图所示。


3.if-elseif-else语句
生活中经常需进行多重判断,例如,考试成绩在90~100区间内分为优秀;成绩为80~89分为良好;成绩为60~79分为及格;低于60分为不及格。
在程序中,多重判断可以通过if-elseif-else语句实现,其语法格式如下:


当执行该语句时,程序依次判断条件表达式的值,当出现某个表达式的值为true时,则执行其对应的语句,然后跳出if-elseif-else语句继续执行其后的代码。如果所有表达式均为false,则执行else后面的语句块n。if-elseif-else语句的执行流程,如图所示。



4.switch语句
switch语句用于根据表达式的值确定在几种不同值时执行不同的语句块,其语法格式如下:


在使用switch语句时,如果多个case后面的语句块是一样的,则该语句块只需书写一次即可。
Ø 循环语句
循环结构用于重复执行某一语句块,在PHP中提供了3种形式的循环语句:while循环语句、do-while循环语句和for循环语句。
1.while循环语句
在while循环语句中,当条件表达式为true时,程序就重复执行循环体语句块,当条件表达式为false时,程序就结束循环,其语法格式如下:


若while循环的循环体只有一条语句,则可以省略左右大括号。while的循环体是否执行,取决于条件表达式是否为true,如图所示。



2.do-while循环语句
do-while循环语句是非零次循环结构,即至少执行一次循环体。执行过程是先执行循环体结构,然后判断条件表达式。若条件表达式为true,程序继续执行循环体;若条件表达式为false,程序终止循环。在日常生活中,并不难找到do-while循环的影子。例如,在利用提款机提款前,会先进入输入密码的界面,允许用户输入3次密码,如果3次都输入错误,银行卡将会被吞掉,其程序的流程就是利用do-while循环设计而成的。
do-while语句的语法格式如下:


do-while语句与while语句有一个明显的区别:do-while语句的条件表达式后面必须有一个分号,用来表明循环结束。do-while循环的执行流程,如图所示。


3.for循环语句
for循环是最常见的循环结构,而且其语句更为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定的情况,完全可以代替while循环语句,其语法格式如下:


其中,表达式1常用于初始化循环变量;表达式2是循环条件表达式,当条件为true时,程序执行循环体语句,当条件为false时,程序结束循环;表达式3在每次执行循环体后执行,一般用于为循环变量增量。for循环的执行流程,如图所示


循环语句
PHP中的循环语句也支持嵌套使用(即多重循环),3种格式的循环语句可以根据需求相互嵌套。
Ø 跳转语句
跳转语句使程序无条件跳转到另一位置,包括break、continue和goto语句。由于这些语句是无条件跳转,因此常常与条件语句配合使用。
1.break语句
break语句可以出现在switch结构和循环结构中,用于强制退出结构,转而执行该结构后面的语句。另外,break 可以接收一个可选的数字来决定跳出几层语句块。
2.continue语句
continue语句可以出现在循环结构中,用于终止本次循环,转而执行下一次循环。
3.goto语句
程序使用goto语句可以跳转到指定位置去执行代码,并且只能从一个文件和作用域中跳转(即无法跳出一个函数或者类方法)。goto语句经常用于跳出循环语句或者switch语句,可以代替多层break语句。
小结:PHP从入门到精通—PHP编程基础
通过本章的学习,大家能够对PHP语言及其优势有初步的认识,重点掌握PHP开发环境的搭建并编写一个简单程序,着重理解PHP程序开发流程。
回复

举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|香雨站

GMT+8, 2025-3-16 12:06 , Processed in 0.378161 second(s), 31 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.. 技术支持 by 巅峰设计

快速回复 返回顶部 返回列表