文章教程

2.6运算符

9/17/2020 9:31:19 PM 人评论 次浏览

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。

教程类别