PHP基础3:表达式和操作符
2017-02-19 本文已影响0人
简单asdf
表达式
- 定义
表达式是可以通过求值来产生一个值的PHP代码块。 - 示例
最简单的表达式是字面量和变量。字面量的结果是其本身,而变量的值存储在变量中。使用简单的表达式和操作符,可以形成更复杂的表达式。
操作符
- 定义
操作符需要一定的值(操作数),然后进行某种操作(例如,将它们相加)。操作符的书写和标点符号一样,例如数学符号“+”和“-”。某些操作符修改其操作数,但大部分操作符不会这么做。 - PHP操作符列表(P优先级,A结合性)
P | A | 操作符 | 操作 |
---|---|---|---|
21 | N | clone, new | 创建新对象 |
20 | L | [ | 数组下标 |
19 | R | ~ | 按位非 |
R | ++ | 自增1 | |
R | -- | 自减1 | |
R | (int), (bool), (float), (string), (array), (object), (unset) | 类型转换 | |
R | @ | 错误屏蔽 | |
18 | N | instanceof | 类型测试 |
17 | R | ! | 逻辑非 |
16 | L | * | 乘法 |
L | / | 除法 | |
L | % | 取模 | |
15 | L | + | 加法 |
L | - | 减法 | |
L | . | 字符串连接 | |
14 | L | << | 按位左移一位 |
L | >> | 按位右移一位 | |
13 | N | <, <= | 小于,小于等于 |
N | >, >= | 大于,大于等于 | |
12 | N | == | 等于 |
N | !=, <> | 不等于 | |
N | === | 类型和值相等 | |
N | !== | 类型和值不相等 | |
11 | L | & | 按位与 |
10 | L | ^ | 按位异或 |
9 | L | 竖线 | 按位或 |
8 | L | && | 逻辑与 |
7 | L | 两竖杠 | 逻辑或 |
6 | L | ?: | 条件操作 |
5 | L | = | 赋值 |
L | +=, =, *=, /=, .=, %=, &=, 竖线=, ^=, ~=, <<=, >>= | 有操作的赋值 | |
4 | L | and | 逻辑与 |
3 | L | xor | 逻辑异或 |
2 | L | or | 逻辑或 |
1 | L | , | 列表分隔符 |
操作符的数目
- 一元操作符
将一个简单的表达式转换成为一个更复杂的表达式。 - 二元操作符
将两个操作数(或表达式)组合成一个更复杂的表达式。 - 三元操作符
将三个表达式结合成一个。
操作符的优先级
- 两条规则
乘法和除法比加法和减法的优先级高。
其他操作使用小括号()。
操作符的结合性
-定义
结合性定义了操作符具有相同优先级时计算的顺序。
隐式转换(类型戏法)
- 定义
许多操作符对操作数类型有要求。PHP的值会根据需要自动进行转换类型。 - 二进制算数操作符的隐式类型转换规则
第一个操作数类型 | 第二个操作数类型 | 类型转换 |
---|---|---|
整型 | 浮点型 | 整型转换为浮点型 |
整型 | 字符串 | 字符串转换成数字,如果字符串转换后是浮点型,整型也会转换成浮点型 |
浮点型 | 字符串 | 字符串转换成浮点型 |
- 字符串连接操作符将两个操作数转换成字符串,然后再连接
3 . 2.74 // 获得字符串 32.74
- 字符串转换为数字
字符串以整数或浮点数开始,则转换为相应的整数或浮点数。
未在字符串开始处发现任何数字,该字符串数值为0。
字符串包含一个.或大写小写e,则转为浮点数。
算术操作符
加法 +
减法 -
乘法 *
除法 /
求模 %
算术负号 -
算术断言 +
字符串连接操作符
.
自动递增/自动递减操作符
++
--
可对字符串操作,例如把一个字母递增,它会成为下一个字母。如为z,则变为a,左边一个字符递增。
比较操作符
- 比较操作符对应的不同的比较关系
第一个操作数 | 第二个操作数 | 比较关系 |
---|---|---|
数字 | 数字 | 数字 |
数字字符串 | 数字字符串 | 数字 |
数字字符串 | 数字 | 数字 |
数字字符串 | 字符串 | 数字 |
字符串 | 数字 | 字典 |
字符串 | 字符串 | 字典 |
- 数字字符串字典比较
strcmp()
- 操作符
==
===
!=, <>
!==
>
>=
<
<=
位操作符
- 定义
位操作符作用于二进制表示的操作数上。操作数先转为二进制,再进行位操作,再转回原类型。
~
& //两个字符串,较长的尾部忽略
| //两个字符串,较短的后面0填补
^ //两个字符串,较长的尾部忽略
<<
>>
逻辑操作符
&&, and
例:
$result = $flag and mysql_connect(); //条件为真才执行
||, or
例:
$result = fopen($filename) or exit(); //异常触发错误信息
xor //有且仅有一个true, 返回true
!
- 短路处理(short-circuiting)
&&前面为false,后面不执行。
||前面为true,后面不执行
类型转换操作符
- 定义
允许把变量强制转换为其他类型。 - 列表
操作符 | 同义操作符 | 转换类型为 |
---|---|---|
(int) | (integer) | 整型 |
(bool) | (boolean) | 布尔型 |
(float) | (double),(real) | 浮点型 |
(string) | 字符串 | |
(array) | 数组 | |
(object) | 对象 | |
(unset) | NULL |
-
变量本身不变
-
特殊转换结果
数组转换成数字,结果为1。
数组转字符串,结果array。
对象与数组可互相转换。
赋值操作符
-
赋值 =
-
+=,-=,*=,/=,%=,^=,&=,|=,.=
其他操作符
-
屏蔽错误@
屏蔽操作符或函数可能产生的错误信息。 -
执行外部命令
...
执行shell命令,返回输出结果。 -
条件选择 ? :
条件选择符先执行?前面的表达式,如果结果为true,返回?与:之间的表达式的值,否则返回: 之后的表达式的值。 -
类型 instanceof
测试变量是否为给定类的示例化对象。
$a = new Foo;
$isAFoo = $a instanceof Foo; // true