3.6 PHP运算符
运算符是用来对变量、常量或数据进行计算的符号,它对一个值或一组值执行一个指定的操作。PHP的运算符主要包括算术运算符、字符串运算符、赋值运算符、位运算符、逻辑运算符、比较运算符、递增或递减运算符和条件运算符,这里只介绍一些常用的运算符。
3.6.1 算术运算符
视频讲解:光盘\TM\lx\3\13 算术运算符.mp4
算术运算(Arithmetic Operators)符是处理四则运算的符号,在数字的处理中应用得最多。常用的算术运算符如表3.11所示。
表3.11 常用的算术运算符
说明
在算术运算符中使用%求余,如果被除数($a)是负数,那么取得的结果也是一个负值。
【例3.17】本例分别使用上述几种算术运算符进行运算,实例代码如下:(实例位置:光盘\TM\sl\3\17)
<?php $a=-100; //声明变量$a $b=50; //声明变量$b $c=30; //声明变量$c echo"\$a=".$a.", "; //输出变量$a echo"\$b=".$b.", "; //输出变量$b echo"\$c=".$c."<p>"; //输出变量$c echo"\$a+\$b=".($a+$b)."<br>"; //计算变量$a加$b的值 echo"\$a-\$b=".($a-$b)."<br>"; //计算变量$a减$b的值 echo"\$a*\$b=".($a*$b)."<br>"; //计算$a乘$b的值 echo"\$a/\$b=".($a/$b)."<br>"; //计算$a除以$b的值 echo"\$a %\$c=".($a %$c)."<br>"; //计算$a和$b的余数,被除数为-100 ?>
运行结果如图3.11所示。
图3.11 算术运算符的简单应用
3.6.2 字符串运算符
视频讲解:光盘\TM\lx\3\14 字符串运算符.mp4
字符串运算符只有一个,即英文的句号“.”,它将两个字符串连接起来,结合成一个新的字符串。使用过C或Java语言的读者应注意,这里的“+”只用作赋值运算符,而不能用作字符串运算符。
【例3.18】本例用于对比“.”和“+”两者之间的区别。当使用“.”时,变量$m和$n两个字符串组成一个新的字符串3.1415926r*r1;当使用“+”时,PHP会认为这是一次运算。如果“+”的两边有字符类型,则自动转换为整型;如果是字母,则输出为0;如果是以数字开头的字符串,则会截取字串头部的数字,再进行运算。实例代码如下:(实例位置:光盘\TM\sl\3\18)
<?php $n="3.1415926r*r"; //声明一个字符串变量,以数字开头 $m=1; //声明一个整型变量 $nm=$n.$m; //使用“.”运算符将两个变量连接 echo $nm."<br>"; $mn=$n+$m; //使用“+”运算符将两个变量连接 echo $mn . "<br>" ; ?>
结果为:3.1415926r*r1
4.1415926
3.6.3 赋值运算符
视频讲解:光盘\TM\lx\3\15 赋值运算符.mp4
赋值运算符是把基本赋值运算符“=”右边的值赋给左边的变量或者常量。在PHP中的赋值运算符如表3.12所示。
表3.12 常用赋值运算符
3.6.4 递增或递减运算符
视频讲解:光盘\TM\lx\3\16 递增或递减运算符.mp4
算术运算符适合在有两个或者两个以上不同操作数的场合使用,但是,当只有一个操作数时,使用算术运算符是没有必要的。这时,就可以使用递增运算符“++”或者递减运算符“--”。
递增或递减运算符有两种使用方法,一种是将运算符放在变量前面,即先将变量作加1或减1的运算后再将值赋给原变量,叫作前置递增或递减运算符;另一种是将运算符放在变量后面,即先返回变量的当前值,然后变量的当前值作加1或减1的运算,叫作后置递增或递减运算符。
【例3.19】定义两个变量,将这两个变量分别利用递增和递减运算符进行操作,并输出结果。实例代码如下:(实例位置:光盘\TM\sl\3\19)
<?php $a = 6; $b = 9; echo "\$a = $a , \$b = $b<p>"; echo"\$a++= ". $a++."<br>"; //先返回$a的当前值,然后$a的当前值加1 echo "运算后\$a的值: ".$a."<p>" ; echo"++\$b=". ++$b."<br>"; //$b的当前值先加1,然后返回新值 echo "运算后\$b的值: ".$b ; echo "<hr><p>"; echo"\$a--=". $a--."<br>"; //先返回$n的当前值,然后$n的当前值减1 echo "运算后\$a的值: ".$a."<p>" ; echo"\$b=". --$b."<br>"; //$n的当前值先减1,然后返回新值 echo "运算后\$b的值: ".$b; ?>
运行结果如图3.12所示。
图3.12 递增和递减运算符
3.6.5 位运算符
视频讲解:光盘\TM\lx\3\17 位运算符.mp4
位逻辑运算符是指对二进制位从低位到高位对齐后进行运算。在PHP中的位运算符如表3.13所示。
表3.13 位运算符
【例3.20】下面使用位运算符对变量中的值进行位运算操作。实例代码如下:(实例位置:光盘\TM\sl\3\20)
<?php $m = 8 ; $n = 12 ; $mn=$m&$n; //位与 echo $mn ." "; $mn=$m|$n; //位或 echo $mn ." "; $mn=$m^$n; //位异或 echo $mn ." "; $mn=~$m; //位取反 echo $mn ." "; ?>
结果为:8 12 4 -9
3.6.6 逻辑运算符
视频讲解:光盘\TM\lx\3\18 逻辑运算符.mp4
逻辑运算符用来组合逻辑运算的结果,是程序设计中一组非常重要的运算符。PHP的逻辑运算符如表3.14所示。
表3.14 PHP的逻辑运算符
在逻辑运算符中,逻辑与和逻辑或这两个运算符有4种运算符号(&&、and、||和or),其中属于同一个逻辑结构的两个运算符号(例如&&和and)之间却有着不同的优先级。
【例3.21】本例分别使用逻辑或中的运算符号||和or进行相同的判断,因为同一逻辑结构的两个运算符||和or的优先级不同,输出的结果也不同。实例代码如下:(实例位置:光盘\TM\sl\3\21)
<?php $i=true; //声明一个布尔型变量$i,赋值为真 $j=true; //声明一个布尔型变量$j,赋值也为真 $z=false; //声明一个初值为假的布尔变量$z if($i or$j and$z) //用or进行判断 echo"true"; //如果if表达式为真,输出true else echo"false"; //否则输出false echo "<br>"; if($i||$j and$z) //用||进行判断 echo"true"; //如果表达式为真,输出true else echo"false"; //如果表达式为假,输出false ?>
结果为:true
false
注意
可以看到,两个if语句除了or和||不同之外,其他完全一样,但最后的结果却正好相反。在实际应用中要多注意一下这样的细节。
3.6.7 比较运算符
视频讲解:光盘\TM\lx\3\19 比较运算符.mp4
比较运算符就是对变量或表达式的结果进行大小、真假等比较,如果比较结果为真,则返回true,如果为假,则返回false。PHP中的比较运算符如表3.15所示。
表3.15 PHP的比较运算符
其中,不太常见的是===和!==。$a === $b,说明$a和$b不只是数值上相等,而且两者的类型也一样。! ==和===的意义相近,$a ! = = $b就是说$a和$b或者数值不等,或者类型不等。
【例3.22】本例使用比较运算符对变量中的值进行比较,设置变量$value="100",变量的类型为字符串型,将变量$value与数字100进行比较,会发现比较的结果非常有趣。其中使用的var_dump()函数是系统函数,作用是输出变量的相关信息。实例代码如下:(实例位置:光盘\TM\sl\3\22)
<?php $value="100"; //声明一个字符串变量$value echo "\$value = \"$value\""; echo "<p>\$value==100: "; var_dump($value==100); //结果为:bool(true) echo "<p>\$value==ture: "; var_dump($value==true); //结果为:bool(true) echo "<p>\$value! =null: "; var_dump($value! =null); //结果为:bool(true) echo "<p>\$value==false: "; var_dump($value==false); //结果为:bool(false) echo "<p>\$value === 100: "; var_dump($value===100); //结果为:bool(false) echo "<p>\$value===true: "; var_dump($value===true); //结果为:bool(true) echo "<p>(10/2.0 ! == 5): "; var_dump(10/2.0! ==5); //结果为:bool(true) ?>
运行结果如图3.13所示。
图3.13 比较运算符的应用
3.6.8 条件运算符
视频讲解:光盘\TM\lx\3\20 条件运算符.mp4
条件运算符(? :),也称为三目运算符,用于根据一个表达式在另外两个表达式中选择一个,而不是用来在两个语句或者程序中选择。条件运算符最好放在括号里使用。
【例3.23】下面应用条件运算符实现一个简单的判断功能,如果正确则输出“条件运算”,否则输出“没有该值”。实例代码如下:(实例位置:光盘\TM\sl\3\23)
<?php $value=100; //声明一个整型变量 echo($value==true)? "条件运算": "没有该值"; //对整型变量进行判断 ?>
结果为:条件运算
3.6.9 运算符的优先级
视频讲解:光盘\TM\lx\3\21 运算符的优先级.mp4
所谓运算符的优先级,是指在应用中哪一个运算符先计算,哪一个后计算,与数学的四则运算遵循的“先乘除,后加减”是一个道理。
PHP的运算符在运算中遵循的规则是:优先级高的运算先执行,优先级低的操作后执行,同一优先级的操作按照从左到右的顺序执行。也可以像四则运算那样使用小括号,括号内的运算最先执行。表3.16从高到低列出了运算符的优先级。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。
表3.16 运算符的优先级
这么多的级别,如果想都记住是不太现实的,也没有必要。如果写的表达式真的很复杂,而且包含了较多的运算符,不妨多使用括号,例如:
<?php $a and (($b ! = $c) or (5 * (50- $d))) ?>
这样就会减少出现逻辑错误的可能。