Web View
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
### === 和 == 的区别
|
||||
|
||||
**`==` (相等运算符)**
|
||||
|
||||
`==` 运算符只比较**值**是否相等。如果两个变量的值相同,即使它们的数据类型不同,`==` 也会返回 `true`。在比较之前,PHP 会尝试将一个变量的类型转换成另一个变量的类型,以便进行比较。这种行为被称为**“类型转换”**或**“弱类型比较”**
|
||||
|
||||
**示例:**
|
||||
|
||||
```php
|
||||
// 字符串 '10' 和整数 10
|
||||
var_dump('10' == 10); // true,因为 '10' 会被转换为整数 10
|
||||
|
||||
// 字符串 'Hello' 和整数 0
|
||||
var_dump('Hello' == 0); // true,因为 'Hello' 在数字比较时被转换为 0
|
||||
|
||||
// 字符串 '10abc' 和整数 10
|
||||
var_dump('10abc' == 10); // true,因为 '10abc' 的起始数字部分被转换为 10
|
||||
|
||||
// null 和 false
|
||||
var_dump(null == false); // true,因为 null 在布尔比较时被视为 false
|
||||
```
|
||||
|
||||
**`===` (全等运算符)**
|
||||
|
||||
`===` 运算符不仅比较**值**是否相等,还比较**数据类型**是否相同。只有当两个变量的值和数据类型都完全相同时,`===` 才会返回 `true`。这种行为被称为**“不进行类型转换的比较”**或**“强类型比较”**
|
||||
|
||||
**示例:**
|
||||
|
||||
```php
|
||||
// 字符串 '10' 和整数 10
|
||||
var_dump('10' === 10); // false,因为一个变量是字符串,另一个是整数
|
||||
|
||||
// 字符串 'Hello' 和整数 0
|
||||
var_dump('Hello' === 0); // false,因为数据类型不匹配
|
||||
|
||||
// 字符串 '10abc' 和整数 10
|
||||
var_dump('10abc' === 10); // false,因为数据类型不匹配
|
||||
|
||||
// null 和 false
|
||||
var_dump(null === false); // false,因为 null 和 false 的数据类型不同
|
||||
```
|
||||
|
||||
| 运算符 | 比较内容 | 行为 | 什么时候用? |
|
||||
| ------ | -------- | ------------------------ | ------------------------------------------------------------ |
|
||||
| == | 值 | 弱类型比较(有类型转换) | 当你确定不需要关心变量类型,只关心值是否相同时。 |
|
||||
| === | 值和类型 | 强类型比较(无类型转换) | 大多数情况下,推荐使用 ===,因为它能防止因隐式类型转换导致的意外行为,使代码更健壮和可预测。 |
|
||||
Reference in New Issue
Block a user