📘 PHP 运算符详解:小白也能看懂的入门指南
🧠 一、什么是运算符?
运算符是 对数据进行操作的符号,比如加减乘除、比较、逻辑判断等。PHP 中有很多类型的运算符,它们帮助我们完成各种任务。
🧮 二、常见运算符分类
我们来按类型分类讲解,并给出通俗易懂的例子。
🔢 1. 算术运算符(加减乘除)
| 操作符 | 名称 | 示例 |
|---|---|---|
+ | 加法 | 5 + 3 = 8 |
- | 减法 | 5 - 3 = 2 |
* | 乘法 | 5 * 3 = 15 |
/ | 除法 | 5 / 2 = 2.5 |
% | 取模 | 5 % 2 = 1(取余数) |
💡 说明:这些是最基础的数学运算符,和我们在数学课上学的一样。
🔁 2. 递增递减运算符
| 操作符 | 作用 | 示例 |
|---|---|---|
++$a | 先加 1,再返回值 | $a = 5; echo ++$a; // 输出 6 |
$a++ | 先返回值,再加 1 | $a = 5; echo $a++; // 输出 5,之后 $a 变为 6 |
--$a | 先减 1,再返回值 | $a = 5; echo --$a; // 输出 4 |
$a-- | 先返回值,再减 1 | $a = 5; echo $a--; // 输出 5,之后 $a 变为 4 |
💡 说明:适用于循环、计数器等场景。
🔤 3. 字符串运算符
| 操作符 | 作用 | 示例 |
|---|---|---|
. | 字符串连接 | 'Hello' . ' World' = 'Hello World' |
.= | 字符串追加 |
$a = 'Hello';
$a .= ' World'; // $a = 'Hello World'
💡 说明:用于拼接字符串。
🧮 4. 位运算符(重点讲解)
位运算符操作的是 二进制位,效率高,常用于底层开发、权限控制等。
| 操作符 | 名称 | 说明 | 示例 | ||
|---|---|---|---|---|---|
& | 按位与 | 两个位都为 1 才为 1 | 10 & 4 = 0 | ||
| ` | ` | 按位或 | 有一个为 1 就为 1 | `10 | 4 = 14` |
^ | 按位异或 | 不同为 1,相同为 0 | 10 ^ 4 = 14 | ||
~ | 按位取反 | 0 变 1,1 变 0 | ~10 = -11(补码) | ||
<< | 左移 | 乘以 2 的 n 次方 | 10 << 4 = 160 | ||
>> | 右移 | 除以 2 的 n 次方 | 10 >> 1 = 5 |
🧠 示例讲解:$a = 10; $b = 4;
$a= 10 → 二进制:1010$b= 4 → 二进制:0100
& 按位与:
1010
& 0100
= 0000 → 0
<< 左移:
10 << 4 → 10 * 2^4 = 10 * 16 = 160
🧠 5. 逻辑运算符
| 操作符 | 名称 | 说明 | 示例 | ||
|---|---|---|---|---|---|
&& | 逻辑与 | 两个都为 true 才为 true | true && false = false | ||
| ` | ` | 逻辑或 | ` | 逻辑或 | |
! | 逻辑非 | 取反 | !true = false | ||
and | 同 && | 优先级更低 | $a and $b | ||
or | 同 ` | ` | |||
xor | 异或 | 一个为 true,另一个为 false 才为 true | true xor true = false |
💡 注意:
&&和and、||和or功能一样,但优先级不同,建议使用&&和||。
⚠️ 6. 错误控制运算符 @
| 操作符 | 说明 | 示例 |
|---|---|---|
@ | 抑制错误信息 | $value = @file('not-exists.txt'); |
💡 注意:
- 仅对表达式有效,比如函数调用、变量赋值。
- 不推荐滥用,会影响调试。
- PHP 8.0 之后,
error_reporting()不再返回 0。
🧩 7. 类型运算符
| 操作符 | 说明 | 示例 |
|---|---|---|
instanceof | 判断一个变量是否是某个类的实例 |
$obj = new MyClass();
if ($obj instanceof MyClass) {
echo "是 MyClass 的实例";
}
💡 用途:面向对象编程中用于判断对象类型。
📌 三、运算符优先级(重要!)
| 优先级 | 运算符(从高到低) | |
|---|---|---|
| 1 | ++ -- ! ~ (int) (float) | |
| 2 | * / % | |
| 3 | + - . | |
| 4 | << >> | |
| 5 | < <= > >= | |
| 6 | == != === !== | |
| 7 | & | |
| 8 | ^ | |
| 9 | ` | ` |
| 10 | && | |
| 11 | ` | |
| 12 | ? :(三元运算符) | |
| 13 | = += -= 等赋值运算符 | |
| 14 | and | |
| 15 | xor | |
| 16 | or |
💡 建议:使用括号
()来明确优先级,避免歧义。
🧪 四、练习题(动手练一练)
$a = 6; $b = 3; echo $a & $b;→ 输出?(答案:2)$a = 10; echo $a << 2;→ 输出?(答案:40)$a = true; $b = false; echo ($a || $b) ? 'true' : 'false';→ 输出?(答案:true)$a = 5; echo ++$a + $a++;→ 输出?(答案:12)
✅ 五、总结表格(一目了然)
| 类型 | 常见操作符 | 用途 | |
|---|---|---|---|
| 算术 | + - * / % | 基础数学运算 | |
| 递增/递减 | ++$a $a++ --$a $a-- | 控制变量增减 | |
| 字符串 | . .= | 拼接字符串 | |
| 位运算 | `& | ^ ~ << >>` | 操作二进制位 |
| 逻辑 | `&& | ||
| 错误控制 | @ | 抑制错误信息 | |
| 类型判断 | instanceof | 判断对象类型 |