2.6运算符
2.6 运算符
运算符是指通过一个或多个表达式来产生另外一个值的某些符号,如“+”、“%”、“.”等都是运算符。在表达式2+1中,运算符“+”有两个操作数,即1和2。具有两个操作数的运算符叫做双目运算符,具有一个操作数的运算符叫做单目运算符。如表达式-6,运算符“-”只有一个操作数6,因此,这里的“-”是单目运算符。
运算符有优先级,即表达式中有多种运算符同时出现时,哪种运算符应该首先被应用。本节将先介绍基本的运算符,最后介绍基本运算符的优先级。
2.6.1 赋值运算符
在PHP中,符号“=”不表示相等,而表示赋值。它的含义是将一个值指定给一个变量,准确地说,它表示把“=”右边的表达式的值赋给左边的变量,如“$a=5”表示将5赋给$a。赋值表达式的值也就是所赋的值,这就是说,“$a=5”的值是5。除了上述最基本的赋值方式外,还有一种所谓的“组合赋值”,例如代码2-16所示示例。
代码2-16 赋值运算符2-16.php
01 <?php
02 $a = 12;
03 $a += 5; //
等价于$a = $a +5
,即$a = 17
04 echo "\$a = ".$a;
05 ?>
【代码解析】代码第03行“$a+=5”等价于“$a=$a+5”。首先计算表达式“$a+5”的值,再将这个表达式的结果赋给$a。因为表达式$a的值是5,故表达式“$a+5”的值是17,再将17赋给$a,所以最终$a的值是17。程序执行结果如图2-12所示。
2.6.2 算术运算符
PHP的算术运算符有加(+)、减(-)、乘(*)、除(/)和取模(%)、取反(-,即取负值),这些运算符的用法和学校里学到的数学知识一样。代码2-17演示了这些运算符的用法,图2-13显示了程序的执行结果。
代码2-17 使用算术运算符2-17.php
01 <?php
02 $a = 12; //
定义两个数字$a
和$b
03 $b = 5;
04
05 $add = $a+$b; //
加法
06 $sub = $a-$b; //
减法
07 $mult = $a*$b; //
乘法
08 $div = $a/$b; //
除法
09 $mod = $a%$b; //
求余
10 $neg = -$a; //
负数
11
12 echo "\$a + \$b = ".$add;
13 echo "<br/>";
14 echo "<br/>";
15 echo "\$a - \$b = ".$sub;
16 echo "<br/>";
17 echo "<br/>";
18 echo "\$a * \$b = ".$mult;
19 echo "<br/>";
20 echo "<br/>";
21 echo "\$a / \$b = ".$div;
22 echo "<br/>";
23 echo "<br/>";
24 echo "\$a % \$b = ".$mod;
25 echo "<br/>";
26 echo "<br/>";
27 echo "-\$a = ".$neg;
28 ?>
【代码解析】代码第02、第03行定义两个变量,然后通过第05~10的代码对变量进行算术运算(加、减、乘、除、取余和取负值),然后第12~27行输出运算结果。

图2-12 赋值运算符的使用

图2-13 算术运算符的使用
提示 a%b(取模运算)表示取$a除以$b的余数。
2.6.3 递增/递减运算符
PHP有和C语言风格相同的递增/递减运算符。递增是指对当前表达式的值增加1,相反,递减是指对表达式的值减1。本书仅介绍整数表达式的递增/递减运算,如下所述为4种风格的递增/递减运算。
·$a++:先返回$a的值,然后将$a的值加1。
·++$a:先将$a的值加1,然后将$a返回。
·$a--:先返回$a的值,然后将$a的值减1。
·--$a:先将$a的值减1,然后返回$a的值。
通过示例代码2-18,可以看出这些运算符及运算方式的不同。
代码2-18 PHP的递增/递减运算符2-18.php
01 <?php
02 echo "<h3>
后加递增 $a++</h3>";
03 $a = 5;
04 echo "$a = " . $a++ . "<br />";//$a++
先返回$a
的值5
,所以这里输出5
,然后变量$a
自加1
赋给$a
05 echo "$a = " . $a . "<br />"; //
上一行$a
输出之后,$a
已经加1
,所以这里$a
的值为6
06
07 echo "<h3>
前加递增 ++$b</h3>";
08 $b = 5;
09 echo "$b = " . ++$b . "<br />";
10 echo "$b = " . $b . "<br />";
11
12 echo "<h3>
后减递减 $c--</h3>";
13 $c = 5;
14 echo "$c =" . $c-- . "<br />";
15 echo "$c = " . $c . "<br />";
16
17 echo "<h3>
前减递减 --$d</h3>";
18 $d = 5;
19 echo "$d = " . --$d . "<br />";
20 echo "$d = " . $d . "<br />";
21 ?>
【代码解析】上述代码非常简单,就是测试了前文介绍的那4种风格的递增/递减运算。虽然现在简单的运算读者能看懂,但实际开发中,运算方式以及参与的变量都会非常复杂,所以务必掌握这4种运算中先算什么、后算什么。该程序的执行结果如图2-14所示。
2.6.4 字符串运算符
字符串运算符只有一个,即字符串的连接运算符“.”。这个运算符将两个字符串连接成一个新的字符串。
其实在此之前,已经在很多示例程序中使用过这个运算符。比如程序要显示一个执行结果,会用“.”将一些内容连接起来,然后输出。例如示例代码2-19。
代码2-19 使用字符串运算符2-19.php
01 <?php
02 $s1 = "Hello "; //
定义两个字符串变量$1
和$2
03 $s2 = "everyone";
04
05 echo $s1.$s2; //
输出这俩字符串变量
06 echo "<br/>";
07 echo "<br/>";
08
09 $s1 .= "friend!"; //
等价于$s1 = $1."friend"
10 echo $s1;
11 ?>
【代码解析】echo语句中经常需要将变量和字符串连接起来,所以“.”运算符用到的频率非常高。上述代码并没有直接在echo中使用此运算符,而是在第09行使用了“.=”,这其实相当于将“Hello”和“friend!”连接起来。程序执行结果如图2-15所示。

图2-14 递增/递减运算

图2-15 字符串连接
2.6.5 逻辑运算符
表2-3列举了各逻辑运算符。
表2-3 逻辑运算符

PHP中存在两种不同形式的“与”和“或”运算符,是因为它们的优先级不一样。代码2-20演示了逻辑运算符的使用。
代码2-20 PHP的逻辑运算符2-20.php
01 <?php
02 $b = FALSE;
03 echo !$b; //$b
的值为FALSE
,所以!$b
的值为TRUE
,这里输出1
04 //(14>=5)
的值为TRUE
,("A">"B")
的值为FALSE
,TRUE||FALSE
的值为TRUE
,所以整个表达式的值为 TRUE
05 (14>=5)||("A">"B");
06 //("B">"A")
的值为TRUE
,(8<7)
的值为FALSE
,TRUE&&FALSE
的值为FALSE
,所以整个表达式的值为FALSE
07 ("B">"A")&&(8<7);
08 ?>
【代码解析】代码第03行使用了逻辑非运算符!,就是将结果取反。第05行使用了逻辑或运算符||,只要结果中有一个为真,表达式的结果就为真。第07行使用了逻辑与运算符&&,只要结果中有一个为假,表达式的结果就为假。
说明 为了清楚地显示两个对比的表达式,逻辑运算符两边的表达式应尽量用()括起来。
2.6.6 比较运算符
比较运算符用来对两个值进行比较,表2-4列举了主要的比较运算符及其可能的运算结果。
表2-4 比较运算符

关于比较运算的内容,在前文介绍表达式时已经有过提及,并且已经举过示例程序,这里不再重复举例。
2.6.7 运算符的优先级
事实上,在小学的数学知识中,就有运算符的优先级。比如1+2×3的结果是7,不是9。因为×号的优先级高于+号的优先级。只不过在PHP中,运算符不仅限于加、减、乘、除。下面列举一些常见的PHP运算符的优先级,最上面的优先级最高,往下依次降低。
(1)new(new运算符,将在后面讲述)。
(2)++、--(递增/递减运算符)。
(3)*、/、%。
(4)+、-、。
(5)&&。
(6)||。
(7)?:(条件运算符,将在后面讲述)。
(8)=(赋值运算符,包含+=、*=、.=等)。
(9)and。
(10)xor。
(11)or。
上一篇:2.5表达式
下一篇:2.7PHP程序的流程控制
