![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=1739531956-jbawSAN4yrlrLwiEufuvhuiyPNSZDiu3-0-218d808f5d495d5781b9130701dce700)
注:在算术运算符中使用“%”求余,如果被除数($a)是负数的话,那么取得的结果也是一个负值。
【例2-19】通过算术运算符计算每月总的支出、剩余工资、房贷占工资的比例等。
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/60_03.jpg?sign=1739531956-4LjwRgG7qcmGNwq69Cz2jJ8moxfjAwgX-0-836ce9341f45aa5facdace9c5ff6b53e)
运行结果如下:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/61_01.jpg?sign=1739531956-mVEY5lWNdFm76r40yxADO95oCBF312FD-0-686e9ec85274d987f9bf81a780272331)
2.5.2 字符串运算符
字符串运算符主要用于处理字符串的相关操作,在PHP中字符串运算符只有一个,那就是“.”,该运算符用于将两个字符串连接起来,结合到一起形成一个新的字符串。应用格式如下:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/61_02.jpg?sign=1739531956-8Rnr3OC5HiUt5HdhIvuts4bBlZipo7DT-0-27382db8afdee8326cad1a4970bc4495)
此运算符在前面的例子中已经使用,如例2-19中的:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/61_03.jpg?sign=1739531956-kjYnFNzk6QldfPvbNYhhPYGHpVNxXgem-0-25ba088e19d7069b54e19a174d752517)
此处使用字符串运算符将$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=1739531956-baNEGobxGZbnsAgDhITixewV7JIajXPi-0-e641c6d8aa60c1537bcc9cc39c6cbf23)
【例2-20】赋值运算符应用。
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/61_05.jpg?sign=1739531956-vqTFk8cyndQbQvF4ldZw5WIKfUlOz4Km-0-f32c268c39820ccb783170f37f6b748d)
此处应用“=”运算符,为变量a赋值,下面再举一个复杂一点示例,代码如下:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/61_06.jpg?sign=1739531956-XlficRaYrcMpJNdSA7RN6sJ1yOLsHN0z-0-a33d7c75d3cfaeaf42293c0f1103eda9)
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/62_01.jpg?sign=1739531956-lUM0Mn7TukfuC01FZBsf7fJSWazz9Ij7-0-a42ce41dbeff694ed4ab007d2a64582e)
运行结果为: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=1739531956-c5kTxQV82ZwPS7zrr8fSBTBSBVc3AxVZ-0-599b79c3f041f0a3cccf5bb3a677712a)
运行结果为:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/62_03.jpg?sign=1739531956-YMk5kj9g8OgqXAYdSnlJgxebmwSW3F0B-0-1302a673bf4154fea9e0100e020075c5)
注:“ ”为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=1739531956-AKCVMhAibQcbj0XkmgXgMFh5j8lCcT9i-0-be5e0ad18536fc7105c09c650b576156)
【例2-22】使用逻辑运算符判断如果变量存在,且值不为空,则执行数据的输出操作,否则弹出提示信息(变量值不能为空!)。
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/63_02.jpg?sign=1739531956-rSQ1TqkKVBiBB6DbFu8cdt8WKXu8SXju-0-1608b23a7b94c8ec6b1f18445b010cd2)
运行结果为:弹出对话框,显示信息为“变量值不能为空!”。
注:本例在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=1739531956-Fvn1C9ka1m9LLXC7H4YYHdHuQ8UPWLAy-0-39e9d5499cc9284a4af3939c50cebfc2)
这里面===和!==不太常见。
【例2-23】使用比较运算符比较小刘与小李的工资。
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/64_01.jpg?sign=1739531956-zVM9OjXk41xwFX8Ez0oKUWeBuNPwtCSU-0-45f8c656b391e807a5864f5b312738dc)
运行结果为:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/64_02.jpg?sign=1739531956-PVFaIz4ggDbvoUOXQLGeN9nkYxtSiZ6j-0-54383ee89eef11d8097a936a769f33c2)
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=1739531956-htbRxccD9oazsnvQtzlSXVsHwRCATooR-0-d16bd5bf85fd32b560a2ab9a2e47bb2a)
运行结果为:zero。
2.5.8 运算符的使用规则
所谓使用规则就是当表达式中包含多种运算符时,运算符的执行顺序,与数学四则运算中的先算乘除后算加减是一个道理。PHP的运算符优先级如表2-11所示。
表2-11 运算符的优先级
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/65_01.jpg?sign=1739531956-Pj5qWs6dfHqna8wT9yueHu3dRvdMQCYi-0-269703cf1b2e30746e33e6503a4176c8)
注:这么多的级别,如果要想都记住是不太现实的,也没有这个必要。如果写的表达式真的很复杂,而且包含较多的运算符,不妨多加(),例如:$a and(($b!=$c) or(5*(50-$d)))。这样就会减少出现逻辑错误的可能。