PHP是弱语言,会根据程序运行环境自动转换, 在使用 == 号时,如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换为数值并且比较按照数值来进行。此规则也适用于 switch 语句。(绝对比较请使用 ===)
第一个操作数类型 | 第二个操作数类型 | 类型转换 | ||
整型 | 浮点型 | 整型转换为浮点型 | ||
整型 | 字符串 | 字符串转换为数字,如果字符串转换后是浮点型,整型也会转换为浮点型 | ||
浮点型 | 字符串 | 字符串转换为浮点型 |
总结一下就是浮点型 > 整型 > 字符串 >布尔类型
(1)自动转换为数值类型(整型和浮点型)
a.合法数字字符串,除了 . e E,并且没有超出整型最大范围转为整型,否则转为浮点型
如:'123’=>123
b.不合法数字字符串(包含字母),如果以数值开头转为改数值,如果以字母开头转为0
如:'12bhd’=>12 ; ‘udj098’=>0
c.布尔值转为数值类型,true 转 1,false转0
d. null 转为数值类型 0
e.空字符串 转为数值类型 0
(2)自动转换为字符类型
a.整型和浮点型转为字符型改数值本身
b.布尔值转为字符类型 true转为值'1',false 空字符串
c.null转为字符型 空字符串
d.数组转为字符型 Array字符串
e.资源转为字符型 Resource id #数字 字符串
(3)自动转换为布尔类型
转为false的情况如下:
a.布尔值false
b.空字符串转为布尔型false
c.null转为布尔型false
d.整型0,浮点型0.0,字符串'0'"0"转为布尔型false
e.没有成员的数组(空数组)转为布尔型false,其他情况都转为true;