PHP中的运算符
PHP中运算符优先级和表达式
4.3.4.1 PHP的运算符
PHP的运算符大部分是从C语言中借用而来的,分为以下几类。
算术运算符: 、-、*、/、%、 、--
字符串运算符:.
赋值运算符:=、 =、-=、*=、/=、%=、.=
位运算符:& 、| 、^ 、<< 、>> 、~
逻辑运算符:&& (And)、|| (Or)、xor (Xor)、! (Not)
比较运算符:<、>、<=、>=、==、===、!=
其他运算符:$、&、@、->、=>、?:
下面就详细讲解各类运算符。
1. 算术运算符号
算术运算符是用来处理四则运算的符号,这是最简单,也最常用的符号,尤其是数字的处理,几乎都会 使用到算术运算符号,其具体意义如表4-3所示。
程序4-16.php为算术运算符的使用示例。
<!--文件4-16.php:算术运算符的应用--> <HTML> <HEAD> <TITLE>算术运算符的应用</TITLE> </HEAD> <BODY> <?php $a=10; $b=3; echo $a." ".$b."="; echo $a $b."<br>"; echo $a."-".$b."="; echo $a -$b."<br>"; echo $a."*".$b."="; echo $a*$b."<br>"; echo $a."/".$b."="; echo $a/$b."<br>"; echo $a."%".$b."="; echo $a%$b."<br>"; echo $a." ="; echo $a ."<br>"; $a=10; echo " ".$a."="; echo $a."<br>"; $a=10; echo $a."--="; echo $a--."<br>"; $a=10; echo "--".$a."="; echo --$a."<br>"; $c="b"; echo ""b" ="; $c ; echo """.$c.""<br>"; ?> </BODY> </HTML>
程序4-16.php的运行结果如图4-12所示。
图4-12 程序4-16.php的运行结
2. 字符串运算符
字符串运算符号只有一个,就是英文的句号“.”。它可以将字符串连接起来,变成合并的新字符串,也 可以将字符串与数字连接,这时类型会自动转换,具体用法如程序4-17.php所示。
<!--文件4-17.php:字符串运算符的应用--> <HTML> <HEAD> <TITLE>字符串运算符的应用</TITLE> </HEAD> <BODY> <?php $int1=2; $int2=0; $str1="PHP 5"; $str2="功能强大"; echo $str1.".".$int1.".".$int2.$str2." ==>我爱PHP 5"; ?> </BODY> </HTML>
程序4-17.php的运行结果如图4-17所示。
图4-13 程序4-17.php的运行结果
3. 赋值运算符
赋值运算符的具体意义如表4-4所示。
如,“$a =$b”等价于“$a=$a $b”,其他赋值运算的等价关系可依此类推。赋值运算可以让程序更 精简,增加程序的执行效率。
4. 位运算符
PHP中的位运算符有6个,常用于二进制的运算场合,其具体含义如表4-5所示。
其中“~”是单目运算符,其他的都是双目运算符。与、或、异或和取反运算的运算规则如下:
0&0=0 0&1=0 1&0=0 1&1=1 (与:有假就假,都真才真)
0|0=0 0|1=1 1|0=1 1|1=1 (或:有真就真,都假才假)
0^0=0 0^1=1 1^0=1 1^1=0 (异或:相等为假,不等为真)
~0=1 ~1=0
5. 逻辑运算符
逻辑运算通常用来测试值为真还是假。逻辑运算经常用在条件判断和循环处理中,在条件判断中用来判 断条件是否满足在循环中用来判断是否该结束循环或继续执行循环体。逻辑运算符的具体含义如表4-6所示。
逻辑运算的真值表如表4-7所示。
6. 比较运算符
比较运算符和逻辑运算的用法差不多,通过比较大小来测试值为真还是假,经常用在条件判断和循环处 理中,在条件判断中用来判断条件是否满足,在循环中用来判断是否该结束循环或继续执行循环体。比较运算 符的具体含义如表4-8所示。
提示
7. 其他运算符
除了上述的运算符号之外,还有一些难以归类的、用于其他用途的运算符,其具体含义如表4-9所示。
其中比较特殊的是三目运算符“?:”,例如:
(expr1) ? (expr2) : (expr3);
表示如果expr1的运算结果为true,则执行expr2;否则执行expr3。实际上它与if...else语句类似,但可 以让程序更为精简和高。
此外,还有用于新对象的定义符new、用于数组下标引用的方括号“[]”、表示结合性的大括 号“{}”等。
4.3.4.2 运算符的优先级与结合性
运算符的优先级指定了两个表达式绑定得有多“紧密”。例如,表达式1 5*3的结果是16而不是18,这 是因为乘号(“*”)的优先级比加号(“ ”)高。必要时可以用括号来强制改变优先级,例如:(1 5)*3 的值为18。如果运算符优先级相同,则使用从左到右的顺序。
表4-10按优先级从高到低列出了所有的运算符。同一行中的运算符具有相同的优先级,此时它们的结合 方向决定求值顺序。
4.3.4.3 表达式
表达式就是由操作数、操作符以及括号等所组成的合法序列。简单地说,PHP中的常量或变量通过运算 符连接后就形成了表达式,如“$a=1”为一个表达式。表达式也有值,如表达式“$a=1”的值就是1。
根据表达式中运算符类型的不同又可以把表达式分为:算术表达式、字符串连接表达式、赋值表达式、 位运算表达式、逻辑表达式、比较表达式等。
比较表达式和逻辑表达式是常见的表达式,这种表达式的值只能是真或假,在程序的流程控制中,会大 量使用这两种表达式。
运算符优先级指定了两个表达式绑定得有多“紧密”。例如,表达式 1 + 5 * 3 的结果是 16 而不是 18 是因为乘号(“*”)的优先级比加号(“+”)高。必要时可以用括号来强制改变优先级。例如:(1 + 5) * 3 的值为 18。
如果运算符优先级相同,那运算符的结合方向决定了该如何运算。例如,"-"是左联的,那么 1 - 2 - 3 就等同于 (1 - 2) - 3 并且结果是 -4. 另外一方面,"="是右联的,所以 $a = $b = $c 等同于 $a = ($b = $c)。
没有结合的相同优先级的运算符不能连在一起使用,例如 1 < 2 > 1 在PHP是不合法的。但另外一方面表达式 1 <= 1 == 1 是合法的, 因为 == 的优先级低于 <=。
括号的使用,哪怕在不是必要的场合下,通过括号的配对来明确标明运算顺序,而非靠运算符优先级和结合性来决定,通常能够增加代码的可读性。
老师整理得这些知识,方便了我们的学习
老师截图保存,清晰明了
通过老师的截图让我对于PHP的符号的表达式懂了好多
这些语法基础对于刚学习PHP的人来说是非常重要的,条理清晰,方便学习
算术运算符变简单了