- PHP 从入门到项目实践(超值版)
- 聚慕课教育研发中心
- 1919字
- 2021-03-30 13:30:25
2.5 PHP运算符
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P46_5204.jpg?sign=1734456075-yCGVEWnRVvRBaGTaGm2Rj3bGEeqEUKMt-0-2cda0c6ee796ac6afdcf46f1b0d50a56)
运算符是用来对变量、常量或数据进行计算的符号。PHP中的运算符包括算术运算符、字符串运算符、赋值运算符、位运算符、逻辑运算符、比较运算符、三元运算符、错误控制运算符等。
2.5.1 算术运算符
算术运算符是处理算术运算的符号。常用的算术运算符如表2-6所示。
表2-6 常用的算术运算符
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-T46_73348.jpg?sign=1734456075-J8GwZWvSkkEweHNZIFl878lFKmfFy1dl-0-dd7785d95a3870252f5e77c51a46cbc6)
注意:在算数运算中取余(%)时,如果被除数是负数,取得的结果也一定是负数。
提示:递增运算和递减运算,主要是针对单一的变量操作的。它们都有两种情况,一种是运算符(++或--)放在变量前,表示预递增或预递减,变量先加1或者减1,然后赋值给自身;另一种是将运算符放到变量的后面,表示后递增或后递减,变量先返回自身的值,然后再将自身的值加1或者减1。
【例2-24】(实例文件:ch02\Chap2.24.php)算术运算符的应用。
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P47_73500.jpg?sign=1734456075-a7voT82rCgFzvJXcIU4kmEMnlVYghKZ2-0-1e19a18d150ce6404da7cee89cfb106a)
在IE浏览器中运行结果如图2-33所示。
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P47_5460.jpg?sign=1734456075-T4N5YzINf7fn2ZhEOe4a3FlpO4YRmW1X-0-fb22bd1c56351612c896bd85df764507)
图2-33 算术运算符的应用
2.5.2 字符串运算符
在PHP中,字符串运算符只有一个“.”,作用是把两个字符串连接在一起,组成一个新的字符串。例如下面的代码:
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P48_73501.jpg?sign=1734456075-h5YJ84kErhxHkBDZ5P8AfhBVkgJq6goP-0-9b638cbe4ce33b99f669029dd9bd6211)
在页面中输出的结果为“我和你”。
2.5.3 赋值运算符
基本的赋值运算符是“=”,表示把“=”右边的值赋值给左边的变量或者常量。PHP中的赋值运算符如表2-7所示。
表2-7 赋值运算符
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-T48_73351.jpg?sign=1734456075-zc6VCnifAzt7YsTDxzGQPtcslRM4KYQq-0-cbe7a8145b318125eccb2c2d976765ca)
2.5.4 位运算符
位运算符是指对二进制位从低位到高位对齐后进行运算。PHP中的位运算符如表2-8所示。
表2-8 位运算符
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-T48_73352.jpg?sign=1734456075-MFtO8mILI9kU7evKDEaX6NRwapm8RF6x-0-88772a681261db4c9df7fdd4112445c5)
【例2-25】(实例文件:ch02\Chap2.25.php)位运算符的应用。
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P48_73502.jpg?sign=1734456075-U4CbaaWbJ8YsqNh08o57ccCJgZXivRYZ-0-c40519b9a3ace0ceec2f5e4b28ba23b4)
在IE浏览器中运行结果如图2-34所示。
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P49_6015.jpg?sign=1734456075-zcpDyoucPlU6gCj1p9ds2na4SLDt0xYC-0-1628c43c2a02805bf4758497320606fa)
图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=1734456075-CYgNRkVDMbQfZp9WKvjmklHKkjjBkpZx-0-991ed2b128e3abe31ecb9750a96bc941)
在逻辑运算符中,逻辑与和逻辑或这两运算符分别有两种运算符号(&&/and和||/or),但是同一个逻辑结构的两个运算符却有着不同的优先级。
【例2-26】(实例文件:ch02\Chap2.26.php)逻辑运算符的应用。
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P49_73504.jpg?sign=1734456075-X2t720cM13TyEMtCwZjnrbcQte7tSThD-0-4bd63b4164bc76019a3cfc80890f15ee)
在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=1734456075-QsnYPAf5ENueXpkz5uRzbOmkFkAlPjoy-0-5366c7037dce19750fa3e432682ae886)
图2-35 逻辑运算符的应用
2.5.6 比较运算符
比较运算符用于比较两个值(数字或字符串)的大小或者真假。PHP中的比较运算符如表2-10所示。
表2-10 比较运算符
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-T50_73359.jpg?sign=1734456075-IUH5c8gS2buSevtaC2bsyl7XSVTcyfY1-0-222b1e14e62e2631e79624f312283e0f)
注意:“==”与“===”和“!=”与“!==”的区别。$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=1734456075-O2SQbcWqhWq7maTsYpoxOjMwbEaQtGMS-0-38c102e09f0ef60533df134df77b8b1c)
其中,问号的前面是判断的条件,如果满足该条件时执行结果1,不满足时执行结果2。
例如,判断变量$a与变量$b的大小,如果$a-$b>0,执行结果1;不满足,执行结果2。
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P51_73508.jpg?sign=1734456075-X1LFQAorQRWQfMPfF2Q8XB3WpInxoXUX-0-4d2728d9a0e0c1bf42b1b13f99043226)
输出的结果为大于。
2.5.8 错误控制运算符
当PHP表达式产生错误时,可以通过错误控制运算符@进行控制。只需将@运算符放置在PHP表达式之前,该表达式产生的任何错误信息将不会输出到页面。但是要注意,@运算符只是对错误信息不进行输出,并没有真正解决错误。
使用错误控制运算符@不仅可以避免浏览器页面出现错误信息,影响页面美观,还能避免错误信息外露,造成系统漏洞。
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P51_73509.jpg?sign=1734456075-J5A3nYppoocgYig7zbeewwvX3BOpl5mf-0-591d69e96e5fdd94bb2f0c34af5cfd78)
运行上面的代码,输出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=1734456075-9LNudPagyL2HujMPfB1iYIo1cWnzs0pa-0-29c33c95a606a3372c299c38ed360fa4)
错误信息将不会输出,但是错误依然存在。
2.5.9 运算符的优先顺序
运算符的优先顺序,是指在表达式运算时哪个运算符先执行。例如,常说的先执行乘除运算,再执行加减运算。
在PHP中,运算符应该遵循优先级高的运算先执行,优先级低的运算后执行,相同优先级的运算按照从左到右的顺序进行。另外,可以使用圆括号强制改变运算符的优先级,圆括号内的运算先执行。PHP中运算符的优先级如表2-11所示。
表2-11 运算符的优先级
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-T51_73361.jpg?sign=1734456075-nT27oyAG4ThEqCiZ8jCJpaXSpa0xZhBM-0-641e9bfde7e55b9da611c41fc04b087f)
可以发现,运算符是比较多的,无须刻意去记住它们,如果写的表达式很复杂,而且包含很多运算符的话,可以多使用括号设置运算的顺序,这样会减少出错的概率。