![PHP 从入门到项目实践(超值版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/705/27111705/b_27111705.jpg)
2.5 PHP运算符
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P46_5204.jpg?sign=1738912811-A6ECspE7mHpOM6NRMypCbiYN9QHemmnQ-0-622b7d69cf886b4c4640b96e52fabc24)
运算符是用来对变量、常量或数据进行计算的符号。PHP中的运算符包括算术运算符、字符串运算符、赋值运算符、位运算符、逻辑运算符、比较运算符、三元运算符、错误控制运算符等。
2.5.1 算术运算符
算术运算符是处理算术运算的符号。常用的算术运算符如表2-6所示。
表2-6 常用的算术运算符
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-T46_73348.jpg?sign=1738912811-SkZbAfrim2K9hK09eKXXLVACxhnwj8qi-0-86b4920362bdbe615bbb761fc67a9c53)
注意:在算数运算中取余(%)时,如果被除数是负数,取得的结果也一定是负数。
提示:递增运算和递减运算,主要是针对单一的变量操作的。它们都有两种情况,一种是运算符(++或--)放在变量前,表示预递增或预递减,变量先加1或者减1,然后赋值给自身;另一种是将运算符放到变量的后面,表示后递增或后递减,变量先返回自身的值,然后再将自身的值加1或者减1。
【例2-24】(实例文件:ch02\Chap2.24.php)算术运算符的应用。
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P47_73500.jpg?sign=1738912811-lYCizK6hi1nJ3zwrA2PRIuEP4qSzn8ak-0-95b1f7096fecae0f212fd91047140845)
在IE浏览器中运行结果如图2-33所示。
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P47_5460.jpg?sign=1738912811-K5rOus75SpfjuNqSRKD5UOyBQpMlYFU4-0-b5e31b8c361a5b1b3995cde7605968eb)
图2-33 算术运算符的应用
2.5.2 字符串运算符
在PHP中,字符串运算符只有一个“.”,作用是把两个字符串连接在一起,组成一个新的字符串。例如下面的代码:
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P48_73501.jpg?sign=1738912811-umoDRJq1VoQolNlQaGi8FW5cYdsEvI87-0-435280c4135c73f6b4a56f2d53a04e06)
在页面中输出的结果为“我和你”。
2.5.3 赋值运算符
基本的赋值运算符是“=”,表示把“=”右边的值赋值给左边的变量或者常量。PHP中的赋值运算符如表2-7所示。
表2-7 赋值运算符
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-T48_73351.jpg?sign=1738912811-KVpBltsHiAvMkN8BYaKl7H4NiIinoJeq-0-3a0599d9e79fa8b470faebeedc6931de)
2.5.4 位运算符
位运算符是指对二进制位从低位到高位对齐后进行运算。PHP中的位运算符如表2-8所示。
表2-8 位运算符
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-T48_73352.jpg?sign=1738912811-9jz5yng5ppiG8RX1g0O40ANBxeV3X6GD-0-6af0c28fba26dce24c39723b32866b26)
【例2-25】(实例文件:ch02\Chap2.25.php)位运算符的应用。
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P48_73502.jpg?sign=1738912811-aJyuf0RwgCUyChZs3R3JBBxpLfPr10uB-0-aa2b39ac1201a3a546b6dcf567987ea9)
在IE浏览器中运行结果如图2-34所示。
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P49_6015.jpg?sign=1738912811-a7CQ4k0bjgXqAZBnoSXON3hZcseDhXJ9-0-74b092e46175264a839a6bdb57aa5876)
图2-34 位运算符的应用
提示:将变量$a和$b的值转换为二进制:5的二进制为0000 0101,7的二进制为0000 0111。
在按位与的过程中,按位比较,相同的位上都为1则为1,其他情况为0,比较结果为0000 0101,输出结果为5。
在按位或的过程中,按位比较,相同的位上有1,则为1,全为0则为0,比较的结果为0000 0111,输出的结果为7。
在按位异或的过程中,按位比较,相同的位上不相同,则为1,相同为0,比较结果为0000 0010,输出结果为2。
2.5.5 逻辑运算符
逻辑运算符用来进行逻辑运算的,是程序设计中非常重要的一组运算符。PHP中的逻辑运算符如表2-9所示。
表2-9 逻辑运算符
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-T49_73357.jpg?sign=1738912811-QmAJPSSgX4TjKWs8riOAWLl6P8XCmP3M-0-5bc30d539be881f355a475b3ad18f7ba)
在逻辑运算符中,逻辑与和逻辑或这两运算符分别有两种运算符号(&&/and和||/or),但是同一个逻辑结构的两个运算符却有着不同的优先级。
【例2-26】(实例文件:ch02\Chap2.26.php)逻辑运算符的应用。
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P49_73504.jpg?sign=1738912811-wHCjrWXCQn1n2m4G2HzTXiQajqqTqDYy-0-0182ad68bf01d55417ebbd42470ce116)
在IE浏览器中运行结果如图2-35所示。
在例2-26中,and和&&、or和||都是表示相同的逻辑结构,结果却不一样。为什么?
其实是因为and、or优先级低于&&、||和=,而&&、||优先级又高于=,所以上面实例中$b和$b1在逻辑运算时,先做赋值运算,然后再做and和or的逻辑运算,所以最后出来上面的结果。
注意:在使用and、or和xor的逻辑运算符,不要和=、&&、||一起使用,避免由于优先级的问题而发生不必要的逻辑错误。
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P50_6185.jpg?sign=1738912811-AI7RTphggbOlwgz5BfJ8hpYKFmcj0A1c-0-ffc3c1d78d172e62ddef983f7d2c1da4)
图2-35 逻辑运算符的应用
2.5.6 比较运算符
比较运算符用于比较两个值(数字或字符串)的大小或者真假。PHP中的比较运算符如表2-10所示。
表2-10 比较运算符
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-T50_73359.jpg?sign=1738912811-iafGWGKC3ShVYiKfRMKiulgi4snvpdH8-0-8b3bd5ba782552224d1dc4c160feddb2)
注意:“==”与“===”和“!=”与“!==”的区别。$a==$b表示$a和$b转换类型后值相同,但是类型不一定相同;$a===$b表示$a和$b的值相同,类型也相同;$a!=$b表示$a和$b转换类型后值不相同,类型也不一定相同;$a!==$b表示$a和$b转换类型后值不相同,或者类型不同。
2.5.7 三元运算符
PHP中三元运算符又称为三目运算符,它可以实现简单的条件判断功能,三元运算符的功能与“if....else”流程语句一致,它在一行中书写,不仅代码精练,而且执行效率也高。语法格式如下:
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P50_73506.jpg?sign=1738912811-gAQGjDkd3peqdinY46h7bsZBNCEuLtz6-0-efdc2226f17a29a1f80ffce59699c6ab)
其中,问号的前面是判断的条件,如果满足该条件时执行结果1,不满足时执行结果2。
例如,判断变量$a与变量$b的大小,如果$a-$b>0,执行结果1;不满足,执行结果2。
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P51_73508.jpg?sign=1738912811-dBZQwqFfPpNmJaYO5nBzrm6UE1DL8dHU-0-2e1a8c8cdf92b818fa160ce9a74d0a06)
输出的结果为大于。
2.5.8 错误控制运算符
当PHP表达式产生错误时,可以通过错误控制运算符@进行控制。只需将@运算符放置在PHP表达式之前,该表达式产生的任何错误信息将不会输出到页面。但是要注意,@运算符只是对错误信息不进行输出,并没有真正解决错误。
使用错误控制运算符@不仅可以避免浏览器页面出现错误信息,影响页面美观,还能避免错误信息外露,造成系统漏洞。
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P51_73509.jpg?sign=1738912811-nQuRgWLGsQJvqqsFgCJqZ754pS1ytt6O-0-d169905af601a5dc43dc02bf689f71a0)
运行上面的代码,输出Notice:Undefined variable:fn in…\Chap2.29.php on line 2的错误,提示使用了未定义的变量。如果不想显示这个错误,就可以在表达式前面加上@,具体代码如下:
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P51_73510.jpg?sign=1738912811-VZiMamlNkYj0a7HolyJ8lHNXPnidhy9t-0-66923ee1c71c73f56fa3b3a0a53380ec)
错误信息将不会输出,但是错误依然存在。
2.5.9 运算符的优先顺序
运算符的优先顺序,是指在表达式运算时哪个运算符先执行。例如,常说的先执行乘除运算,再执行加减运算。
在PHP中,运算符应该遵循优先级高的运算先执行,优先级低的运算后执行,相同优先级的运算按照从左到右的顺序进行。另外,可以使用圆括号强制改变运算符的优先级,圆括号内的运算先执行。PHP中运算符的优先级如表2-11所示。
表2-11 运算符的优先级
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-T51_73361.jpg?sign=1738912811-J1fyIhOS8z24sDD5iVpwlzo8cAR0NEzN-0-1503fd23d9ba23e78688170208f0660f)
可以发现,运算符是比较多的,无须刻意去记住它们,如果写的表达式很复杂,而且包含很多运算符的话,可以多使用括号设置运算的顺序,这样会减少出错的概率。