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。
共有条评论 网友评论