### === 和 == 的区别

`==` (相等运算符)

`==` 运算符只比较值是否相等。如果两个变量的值相同，即使它们的数据类型不同，`==` 也会返回 `true`。在比较之前，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`。这种行为被称为“不进行类型转换的比较”或“强类型比较”

示例：

    // 字符串 '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 的数据类型不同

运算符 | 比较内容 | 行为 | 什么时候用？
--- | --- | --- | ---
== | 值 | 弱类型比较（有类型转换） | 当你确定不需要关心变量类型，只关心值是否相同时。
=== | 值和类型 | 强类型比较（无类型转换） | 大多数情况下，推荐使用 ===，因为它能防止因隐式类型转换导致的意外行为，使代码更健壮和可预测。