目录
==和===
使用 ==
时,如果两个比较的操作数类型不同,PHP 会尝试将它们转换为相同的类型,然后再进行比较。
使用 ===
进行比较时,不仅比较值,还比较变量的类型,PHP 不会进行任何类型强制转换。如果两个操作数的类型不同,即使它们的值看起来相同,比较结果也会为假。
在 PHP 中,强制类型转换是一种显式地将一个变量从一种类型转换为另一种类型的方式。当需要将一个变量转换为特定类型时,可以使用强制类型转换。以下是 PHP 中常见的强制类型转换规则:
- 转换为布尔值 (bool)
- 当转换为布尔值时,以下值被认为是
false
:
- 布尔值
false
本身- 整数
0
- 浮点数
0.0
- 空字符串
""
- 字符串
"0"
- 没有设置任何值的变量(
null
)- 没有元素的数组
- 特殊类型
null
- 没有任何属性的对象
- 所有其他值都被认为是
true
。- 转换为整数 (int)
- 当转换为整数时,浮点数会被截断为整数部分,字符串从开头开始解析直到第一个非数字字符为止。
- 布尔值
true
转换为1
,false
转换为0
。null
转换为0
。- 对象转换为整数时,会调用对象的
__toString()
方法(如果存在),然后将结果转换为整数。- 转换为浮点数 (float)
- 当转换为浮点数时,字符串从开头开始解析直到第一个非数字字符或字符串结束。
- 布尔值
true
转换为1.0
,false
转换为0.0
。null
转换为0.0
。- 对象转换为浮点数时,会调用对象的
__toString()
方法(如果存在),然后将结果转换为浮点数。- 转换为字符串 (string)
- 整数和浮点数会被转换为它们的字符串表示形式。
- 布尔值
true
转换为"1"
,false
转换为""
(空字符串)。- 数组和对象转换为字符串时,会调用它们的
__toString()
方法(如果存在)。如果不存在,则会触发一个警告,并返回null
的字符串表示形式。null
转换为""
(空字符串)。- 资源类型(resource)在转换为字符串时通常没有意义,除非与特定的资源处理器有关。
- 转换为数组 (array)
- 转换为数组时,对于非数组和对象类型的值,将创建一个只包含该值的数组。
- 对于对象,如果对象实现了
ArrayAccess
接口,它将被视为数组。否则,将创建一个