PHP的运算符与C语言基本相同,也引进15级运算符,常用的运算符

优先级 运算符 描述 结合性
1 () 圆括号
2 ++,- -,-,! 自增、自减、负号、逻辑非 非结合
3 *,/,% 乘、除、取余 从左向右
4 +,- 加、减 从左向右
5 <<,>> 左移、右移 从左向右
6 >,>=,<,<= 大于、大于等于、小于、小于等于 非结合
7 ==,!= 等于、不等于 非结合
8 & 按位与 从左向右
9 ^ 按位异或 从左向右
10 | 按位或 从左向右
11 && 逻辑与 从左向右
12 || 逻辑或 从左向右
13 ?: 条件运算符 从左向右
14 =,+=,-=,*=,/=,%= 赋值运算符 从左向右
15 @ 错误控制运算符 非结合
算术运算符

(1)双目运算符:+,-,*,/,%

当“/”两侧为整数时,结果为整数或浮点数;当“%”两侧为浮点数时,舍去小数点部分取整,结果为整数。

(2)单目运算符:++(自增)- -(自减)

  1. ++,- -只能作用在变量上,不能作用在常量和表达式上。

  2. $i++,++$i单独成为语句时,均等价于$i=$i+1

  3. $i++,++$i的不同之处:$i++是先返回$i,再使$i的值加1;++$i则是先使$i的值加1,再返回$i。

    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $i = 3;
    $j = $i++;
    echo "$i,$j"."<br>"; //输出:4,3
    $i = 3;
    $j = ++$i;
    echo "$i,$j"; //输出:4,4
    ?>

算术运算符的优先级

运算符 优先级 结合性
++,- - 2级 非结合
*,/,% 3级 从左向右
+,- 4级 从左向右

由算术运算符组成的表达式称为算术表达式,算术表达式的值是一个整数或浮点数。

关系运算符

关系运算符的优先级

运算符 优先级 结合性
>,>=,<,<= 6级 非结合
==,!= 7级 非结合

关系运算符表示对操作数的比较运算,因此也称为比较运算符,由关系运算符组成的表达式称为关系表达式。关系表达式的值为true或false,例如7>=7的值为true。

注:如果数值和字符串进行比较,则字符串先被转换为数值再进行比较;如果两个数字字符串进行比较,则它们都会被当成数值来比较。

1
2
3
4
5
<?php
var_dump(12.5>"abc"); //实际比较的是12.5和0,输出true
var_dump("12.5">"9"); //实际比较的是12.5和9,输出true
var_dump("abc">="zc"); //实际比较的是“abc”和“zc” 输出false
?>
逻辑运算符

逻辑运算符的优先级

运算符 优先级 栗子 解释
! 2级 !&x
&& 11级 $x&&$y 只要$x,$y有一个为假,结果就为假
|| 12级 $x||$y 只要$x,$y有一个为真,结果就为真

参加逻辑运算的操作数必须为逻辑值。由逻辑运算符组成的表达式称为逻辑表达式。逻辑表达式值为true或false,例如:2+3>7&&7<8是一个逻辑表达式,它的值为false。若一个表达式含有各类运算符,则表达式的类型取决于级别最低的运算符的类型。

条件运算符

PHP中唯一的一个三目运算符就是条件运算符(?:),由条件运算符组成的表达式称为条件表达式,格式为:

操作数1?操作数2:操作数3

其中“操作数1”的值必须为逻辑值,否则将出现编译错误,进行条件运算时,首先判断“操作数1”是否为真(true)

如果“操作数1”为真,则条件表达式的值为“操作数2”的值;如果“操作数1”的值为假,则条件表达式的值为“操作数3”的值

例如:$a=3,$b=5,则$a>$b?$a:$b的值为5。

注:条件表达式具有“右结合性”的意思是,操作从右向左组合,例如:$a?$b:$c?$d:$e表达式的计算与$a?$b:($c?$d:$e)相同。

赋值运算符

(1)赋值运算符

赋值运算符包括=、+=、-=、*=、/=、%=,它们的优先级为14级,结合性是从左向右,例如:$a=$b=$c=4;语句表示$a,$b,$c的值均为4。

复合赋值运算符

赋值运算符 举 例 含 义
+= $a+=$b $a=$a+$b
-= $a-=$b $a=$a-$b
*= $a*=$b $a=$a*$b
/= $a/=$b $a=$a/$b
%= $a%=$b $a=$a%$b

(2)赋值表达式

赋值表达式的值等于被赋值的变量的值。例如:表达式$a=5的值为5。

错误控制运算符

PHP支持错误控制运算符@,将其放置在PHP表达式之前,该表达式可能产生的任何错误信息都将被忽略。

注:当要使用的变量名的值为NULL时,就必须在变量名前面加@。

小结:PHP常用运算符可分为6类:算术运算符、关系运算符、逻辑运算符、条件运算符、赋值运算符、错误控制运算符