![PHP+MySQL Web应用开发教程](https://wfqqreader-1252317822.image.myqcloud.com/cover/889/33892889/b_33892889.jpg)
2.5 PHP运算符
运算符是用来对变量、常量或数据进行计算的符号,它对一个值或一组值执行一个指定的操作。PHP运算符包括算术运算符、字符串运算符、赋值运算符、位运算符、递增运算符或递减运算符等。下面分别对各种运算符进行介绍。
2.5.1 算术运算符
算术运算符主要用于处理算术运算操作,常用的算术运算符及作用如表2-7所示。
表2-7 常用的算术运算符
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/60_02.jpg?sign=1739039472-HN2TfioZxM1yv2XPjZ2TkgzDLefzyBmK-0-bf523291ba5d8aa7cdc097e156ab3172)
注:在算术运算符中使用“%”求余,如果被除数($a)是负数的话,那么取得的结果也是一个负值。
【例2-19】通过算术运算符计算每月总的支出、剩余工资、房贷占工资的比例等。
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/60_03.jpg?sign=1739039472-p3mJFpUWYbAEjGA7bhzBhzxUtx9b8lk7-0-95bee143118c9e5150ed92d2ae688a93)
运行结果如下:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/61_01.jpg?sign=1739039472-9ZhRJ78rK6GKC5ziSMCS9649LKyiuxGd-0-b2f44a0071e976364ed4ec0982d6ee70)
2.5.2 字符串运算符
字符串运算符主要用于处理字符串的相关操作,在PHP中字符串运算符只有一个,那就是“.”,该运算符用于将两个字符串连接起来,结合到一起形成一个新的字符串。应用格式如下:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/61_02.jpg?sign=1739039472-Ia91LvgHiKPUmdLkfMKTukOyIy0I3xVc-0-26c139ed7f1934ab7abef1bb696e8d03)
此运算符在前面的例子中已经使用,如例2-19中的:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/61_03.jpg?sign=1739039472-sGyVMhRMprkGlHwSroLTS9qlsFeDuq5J-0-8aaffaf4bd3afb47a73b2cc27f55642f)
此处使用字符串运算符将$c+$b的值与字符串“<br>”连接,在输出$c+$b的值后执行换行操作。
2.5.3 赋值运算符
赋值运算符主要用于处理表达式的赋值操作,PHP中提供了很多赋值运算符,其用法及意义如表2-8所示。
表2-8 常用赋值运算符
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/61_04.jpg?sign=1739039472-mMWrgJNMdE78i5swEOQaFSrkjcmb1lfz-0-c6e9f47f1934f0c0b66275a48f4670ba)
【例2-20】赋值运算符应用。
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/61_05.jpg?sign=1739039472-JknNVtPWiue6qK6EC3BPTP11hrNlugqu-0-c1b2c77f66bc72d16f80354540cfac61)
此处应用“=”运算符,为变量a赋值,下面再举一个复杂一点示例,代码如下:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/61_06.jpg?sign=1739039472-138xsLDQkh5PNMD18hPXUjaKrlu50RJP-0-afd79d21415587c244b04b11784892e9)
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/62_01.jpg?sign=1739039472-QOiPmRbBgWqEYjRN4lArUsalScOr2MBz-0-98a8a195435c2af909395856639a6025)
运行结果为:50。
注:在执行i=i+1的操作时,建议使用i+=1来代替。因为其符合C/C++的习惯,摈弃效率还高。
2.5.4 递增或递减运算符
递增运算符“++”和递减运算符“--”与算术运算符有些相同,都是对数值型数据进行操作。但算术运算符适合在两个或者两个以上不同操作数的场合使用,当只有一个操作数时,就可以使用“++”或者“--”运算符。
【例2-21】递增和递减运算符应用。
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/62_02.jpg?sign=1739039472-T0jAU8QhH1tjTuqBVUdRpqrDz4bSTF6E-0-595599a902a2a93bd70f05261bfd71b4)
运行结果为:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/62_03.jpg?sign=1739039472-kaz4kIZ4h8TVBnmhsdShQ2xUyDrSUsJ5-0-25b9c04639b65e1ac56df2e3d998129f)
注:“ ”为HTML的空格标记。
上例中变量$b自加和$d自减后的值为什么没变?
当运算符位于变量前时(++$a),先自加,然后再返回变量的值;当运算符位于变量后时($a++),先返回变量的值,然后再自加,即输出的是变量a的值,并非a++的值。这就是为什么变量$b自加和$d自减后的值为什么没变的原因。
2.5.5 逻辑运算符
逻辑运算符对布尔数据进行操作,返回布尔型结果,是程序设计中一组非常重要的运算符。PHP的逻辑运算符如表2-9所示。
表2-9 PHP的逻辑运算符
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/63_01.jpg?sign=1739039472-VoO6PSVcHzFtAE0MRZiMLY5fUcCljaSd-0-c5d2a4201a1f1803c8cd450b37300bbc)
【例2-22】使用逻辑运算符判断如果变量存在,且值不为空,则执行数据的输出操作,否则弹出提示信息(变量值不能为空!)。
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/63_02.jpg?sign=1739039472-Wb1Zt2gEb9pSki8x74RCLHwNn1vLFqgY-0-a8b6030de3650ce8936bc5777b9272b8)
运行结果为:弹出对话框,显示信息为“变量值不能为空!”。
注:本例在if语句中,应用逻辑与判断当变量存在,且值不为空的情况下输出数据,否则输出提示信息。
isset()函数检查变量是否设置,如果设置则返回true,否则返回false。
empty()函数检测变量是否为空,如果为空则返回true,否则返回false。
注:当逻辑表达式中后一部分的取值不会影响整个表达式的值时,为了提高程序效率,后一部分将不再做任何数据运算。例如,表达式$a&&$b,若$a为false,则$b不再计算;若$a||$b中的$a为true,$b也不需要计算。
2.5.6 比较运算符
比较运算符主要用于比较两个数据的值,返回值为一个布尔类型。PHP中的比较运算符如表2-10所示。
表2-10 PHP的比较运算
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/63_03.jpg?sign=1739039472-CqR7Q8VMsnuEhf4Pk6lgem9Celxbr1gy-0-ca3ffd3198e4ce0503235ce799816c3f)
这里面===和!==不太常见。
【例2-23】使用比较运算符比较小刘与小李的工资。
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/64_01.jpg?sign=1739039472-aI7bF7eGX4lePFf8DjyKmyzTVyySMT7U-0-b9c1cb31560e1cca799c59ed14457c50)
运行结果为:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/64_02.jpg?sign=1739039472-b2zsf35EWJX2RPzsSOG4yY8RHpFMUQ2Z-0-7824b7328f01d07d30a96113668e8075)
2.5.7 条件运算符
条件运算符可以提供简单的逻辑判断,其应用格式为:表达式1?表达式2:表达式3
如果表达式1的值为true,则执行表达式2,否则执行表达式3。
【例2-24】条件运算符应用:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/64_03.jpg?sign=1739039472-7gArXmqmWt1XslOk7CGDQQ70NsnAr4RQ-0-97bbda2ed910cc3b95b489afd64afcd1)
运行结果为:zero。
2.5.8 运算符的使用规则
所谓使用规则就是当表达式中包含多种运算符时,运算符的执行顺序,与数学四则运算中的先算乘除后算加减是一个道理。PHP的运算符优先级如表2-11所示。
表2-11 运算符的优先级
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/65_01.jpg?sign=1739039472-4kGdKHPbnhYwrY25ni1vQQMV31CcXRFm-0-f1107cbfbf93b10abe44c1b08b990938)
注:这么多的级别,如果要想都记住是不太现实的,也没有这个必要。如果写的表达式真的很复杂,而且包含较多的运算符,不妨多加(),例如:$a and(($b!=$c) or(5*(50-$d)))。这样就会减少出现逻辑错误的可能。