编程语言
C#编程语言基础
C#面向对象与多线程
C#数据及文件操作
JavaScript基础
JavaScript的数据类型和变量
JavaScript的运算符和表达式
JavaScript的基本流程控制
JavaScript的函数
JavaScript对象编程
JavaScript内置对象和方法
JavaScript的浏览器对象和方法
JavaScript访问HTML DOM对象
JavaScript事件驱动编程
JavaScript与CSS样式表
Ajax与PHP
ECMAScript6的新特性
Vue.js前端开发
PHP的常量与变量
PHP的数据类型与转换
PHP的运算符和优先规则
PHP程序的流程控制语句
PHP的数组操作及函数
PHP的字符串处理与函数
PHP自定义函数
PHP的常用系统函数
PHP的图像处理函数
PHP类编程
PHP的DataTime类
PHP处理XML和JSON
PHP的正则表达式
PHP文件和目录处理
PHP表单处理
PHP处理Cookie和Session
PHP文件上传和下载
PHP加密技术
PHP的Socket编程
PHP国际化编码
MySQL数据库基础
MySQL数据库函数
MySQL数据库账户管理
MySQL数据库基本操作
MySQL数据查询
MySQL存储过程和存储函数
MySQL事务处理和触发器
PHP操作MySQL数据库
数据库抽象层PDO
Smarty模板
ThinkPHP框架
Python语言基础
Python语言结构与控制
Python的函数和模块
Python的复合数据类型
Python面向对象编程
Python的文件操作
Python的异常处理
Python的绘图模块
Python的NumPy模块
Python的SciPy模块
Python的SymPy模块
Python的数据处理
Python操作数据库
Python网络编程
Python图像处理
Python机器学习
TensorFlow深度学习
Tensorflow常用函数
TensorFlow用于卷积网络
生成对抗网络GAN
运算符用于指定在程序中执行何种计算,通常针对一个以上操作数来进行运算。PHP支持大多数编程语言中的运算符,包括:算术运算符、赋值运算符、逻辑运算符和比较运算符等。这些运算符按照操作数的数量可以分为:一元运算符、二元运算符和三元运算符。
1.赋值运算符:
赋值运算符是使用频率最高的运算符之一,其中最基本的赋值运算符是“=”。赋值运算符就是将右表达式的值存储在左操作数指定的存储位置。PHP常用的赋值运算符见表:
运算符 |
说明 |
示例 |
结果 |
= |
赋值 |
$n=5 |
$n的值为5 |
+= |
加法赋值 |
$n+=4 |
$n的值为$n加5 |
*= |
乘法赋值 |
$n*=5 |
$n的值为$n乘以5 |
/= |
除法赋值 |
$n/=10 |
$n的值为$n除以10 |
-= |
减法赋值 |
$n-=2 |
$n的值为$n减2 |
%= |
取模赋值 |
$n%=2 |
$n的值为$n取模2 |
2.字符串运算符:
字符串运算符有两个,第一个是连接运算符(“.”),它返回其左右参数连接后的字符串。第二个是连接赋值运算符(“.=”),它将右边参数附加到左边参数后,作为一个新的值再赋值给左边变量。示例:
<?php
$white="白色";
$str=" 黑色 ".$white." 红色 ";
$str.=" 绿色 ";
echo $str."\n";
?>
3.算术运算符:
算术运算符是最基本的运算符,PHP中算术运算符包括+(加法)、-(减法)、*(乘法)、/(除法)、%(取模)和-(取反)。如表:
运算符 |
名称 |
示例 |
结果 |
- |
取反 |
$n=-50 |
$n的值为-50 |
+ |
加法 |
$n=10+4 |
$n的值为15 |
- |
减法 |
$n=10-5 |
$n的值为5 |
* |
乘法 |
$n=10*5 |
$n的值为50 |
/ |
除法 |
$n=7/3 |
$n的值为2.333 |
% |
取模 |
$n=7%3 |
$n的值为1 |
PHP中的除法运算符“/”总是返回浮点数,除非两个数都是整数(或字符串转换成的整数)并且正好能整除,这时返回一个整数。而取模运算“%”的操作数在运算之前都会转换成整数(除去小数部分)。
4.递增和递减运算符:
递增和递减运算是一元运算符,可以使某一个变量自动加1或者减1。
运算符 |
名称 |
示例 |
结果 |
++ |
递增运算符 |
++$num |
$num的值加1,然后返回$num |
$num++ |
返回$num,然后$num的值加1 |
||
--- |
递减运算符 |
--$num |
$num的值减1,然后返回$num |
$num-- |
返回$num,然后$num的值减1 |
使用递增和递减运算符时,要注意运算符表达式的值以及使用运算符之后变量的值。示例:
<?php
$n=5;
$n1=$n++; //结果:$n=6,$n1=5
$n2=++$n; //结果:$n=7,$n1=7
$n2+=$n++; //结果:$n=8,$n1=14
?>
5.位运算符:
位运算符允许对整型数中指定的位进行置位。如果左右都是字符串,则位运算符将操作字符的ASCII值。如表:
运算符 |
名称 |
示例 |
结果 |
& |
按位与 |
$x&$y |
将把$x和$y中都为1的位设为1 |
| |
按位或 |
$x|$y |
将把$x或者$y中为1的位设为1 |
^ |
按位异或 |
$x^$y |
将把$x和$y中不同的位设为1 |
~ |
按位非 |
~$x |
将把$x中为0的位设为1,为1的位设为0 |
<< |
左移 |
$x<<$y |
将把$x中的位向左移动$y次(每一次移动都表示乘以2) |
>> |
右移 |
$x>>$y |
将把$x中的位向右移动$y次(每一次移动都表示除以2) |
6.逻辑运算符:
逻辑运算符通常用在控制语句中,使用的是布尔类型的操作数,返回结果为true或false。如表:
运算符 |
名称 |
示例 |
结果 |
and |
逻辑与 |
$x and $y |
如果$x与$y都为true,返回true;否则返回false |
or |
逻辑或 |
$x or $y |
如果$x与$y有任意一个为true,返回true;否则返回false |
xor |
逻辑异或 |
$x xor $y |
如果$x与$y只有一个为true,返回true;否则返回false |
! |
逻辑非 |
!$x |
如果$x不为true,返回true;否则返回false |
&& |
逻辑与 |
$x&&$y |
如果$x与$y都为true,返回true;否则返回false |
|| |
逻辑或 |
$x||$y |
如果$x与$y有任意一个为true,返回true;否则返回false |
逻辑与和逻辑或分别有两种不同形式的运算符,效果一样,但优先级不同,and的优先级比&&低,or优先级比||低。
7.比较运算符:
比较运算符就是比较两个数值的大小,返回的值为布尔值。比较表达式通常作为控制语句的判断条件。如表:
运算符 |
名称 |
示例 |
结果 |
== |
等于 |
$a==$b |
如果$a等于$b,返回true;否则返回false |
=== |
全等 |
$a===$b |
如果$a等于$b,并且它们的类型也相同,返回true;否则返回false |
!= |
不等 |
$a!=$b |
如果$a不等于$b,返回true;否则返回false |
<> |
不等 |
$a<>$b |
如果$a不等于$b,返回true;否则返回false |
!=== |
非全等 |
$a!==$b |
如果$a不等于$b,或者它们的类型不同,返回true;否则返回false |
< |
小于 |
$a<$b |
如果$a小于$b,返回true;否则返回false |
> |
大于 |
$a>$b |
如果$a大于$b,返回true;否则返回false |
<= |
小于等于 |
$a<=$b |
如果$a小于或者等于$b,返回true;否则返回false |
>= |
大于等于 |
$a>=$b |
如果$a大于或者等于$b,返回true;否则返回false |
在上述比较运算符中,如果比较一个整数和字符串,则字符串会被转换为整数。如果比较两个数字字符串,则作为整数比较。多种变量比较的规则:
左侧变量类型 |
右侧变量类型 |
结果 |
null string |
string |
将NULL转换为””,进行数字或词汇比较 |
bool string |
任何其他类型 |
转换为bool,false<true |
object |
object |
内置类定义了比较方式。不同的类不能比较,相同的类按照与array相同的方式对属性进行比较 |
string resource number |
String resource number |
将字符串和资源转换成数字,按普通数字比较 |
array |
array |
具有较少成员的数组较小,如果左侧数组中的键不存在于右侧数组,则数组无法比较,否则挨个值比较 |
array |
任何其他类型 |
array总是更大 |
object |
任何其他类型 |
Object总是更大 |
全等运算符“===”用来测试两个表达式是否相等。数字和逻辑值按值进行比较,如果具有相同的值则视为相等;如果字符串表达式具有相同的字符数而且这些字符都相同,则这些字符串表达式相等;表示对象、数组和函数的变量按引用进行比较,如果两个变量引用同一个对象、数组或函数则它们相等。两个数组,即使具有相同数量的元素,也不会被视为相等。
注意以下比较运算的结果:
运算 |
结果 |
"" == "0" |
false |
0 == "" |
true |
0 == "0" |
true |
false == "false" |
false |
false == "0" |
true |
false == NULL |
true |
"\t\r\n" == 0 |
true |
运算 |
结果 |
"" === "0" |
false |
0 === "" |
false |
0 === "0" |
false |
false === "false" |
false |
false === "0" |
false |
false === NULL |
false |
"\t\r\n" === 0 |
false |
8.条件运算符:
条件运算符是唯一的三元运算符,格式为:
Condition?true_statement:false_statement;
其中,Condition表示执行的条件表达式。如果表达式的值为true,则使用true_statement的值,否则使用false_statement的值。示例:
$z=($x==$y)?2:1;
下面代码可以判断$a是否为奇数或者偶数:
echo $a%2==0 ? $a."是偶数"."\n" : $a."是奇数"."\n";
尽量避免同时使用多个条件运算符,因为同一语句中使用多个条件运算符时会造成PHP运算结果不清晰。
9.错误控制运算符:
PHP的错误控制运算符只有一个@,把@放在一个PHP表达式之前,将忽略该表达式可能产生的任何错误信息。示例:
<?php
$conn=@mysql_connect("localhost","root","123456");
echo "数据库连接已打开";
@mysql_select_db("test");
echo "数据库已打开";
?>
使用时注意:@运算符只对表达式有效,如果能从某处得到值,就能在它前面加上@运算符,可以把@放在变量、函数和include()调用、常量等之前,但不能放在函数或类的定义之前,也不能用于条件结构。
10.运算符的优先规则:
在实际应用中,每个表达式可能由多个运算符组成,在计算时需要按照优先级的规则决定每个运算符给定表达式中的计算顺序。下表从高到低列出了运算符的优先级。
运算符 |
运算方向 |
作用 |
clone new |
非结合 |
clone和new |
[ |
左 |
array() |
++ -- |
非结合 |
递增/递减运算符 |
~ - (int) (float) (string) (array) (object) (bool) @ |
非结合 |
类型 |
instanceof |
非结合 |
类型 |
! |
右结合 |
逻辑操作符 |
* / % |
左 |
算术运算符 |
+ - . |
左 |
算术运算符和字符串运算符 |
<< >> |
左 |
位运算符 |
< <= > >= <> |
非结合 |
比较运算符 |
== !== === !== |
非结合 |
比较运算符 |
& |
左 |
位运算符和引用 |
^ |
左 |
位运算符 |
| |
左 |
位运算符 |
&& |
左 |
逻辑运算符 |
|| |
左 |
逻辑运算符 |
?: |
左 |
三元运算符 |
= += -= *= /= .= %= &= |= ^= <<= >>= |
右 |
赋值运算符 |
and |
左 |
逻辑运算符 |
xor |
左 |
逻辑运算符 |
or |
左 |
逻辑运算符 |
, |
左 |
分隔表达式 |
同一行中的运算符具有相同的优先级,此时它们的结合方向决定求值顺序。可以用括号来强制改变优先级。
要记住这么多运算符的优先级比较困难,实际应用中使用括号来划分优先级。