PHP中的数字类型转换主要分为自动类型转换和强类型转换两种方式,具体如下:
1. 自动类型转换
PHP作为弱类型语言,会在运算或赋值时自动调整数据类型。常见场景包括:
- 布尔值转数字:true转为1,false转为0(如true + 1结果为2)。
- 字符串转数字:从字符串开头解析数字,直到遇到非数字字符(如"123abc" + 1结果为124,"abc123"转为0)。
- 整型与浮点数互转:整型转浮点数精度不变;浮点数转整型时直接舍去小数部分(如3.9转为3),超出整型范围时结果不确定。
- null转数字:null转为0(如null + 1结果为1)。
2. 强类型转换
通过显式函数或语法强制转换类型,包括:
- 括号语法:使用(int)、(float)、(string)等(如(int)"123.45"结果为123)。
- 专用函数:
intval():转为整型(如intval("10.5")结果为10)。
floatval():转为浮点型(如floatval("3.14")结果为3.14)。
strval():转为字符串(如strval(100)结果为"100")。
- settype()函数:永久修改变量类型(如settype($var, "integer"))。
注意事项:
- 自动转换可能导致意外结果(如字符串含非数字字符时转换结果为0)。
- 强转换中,settype()会直接修改变量,而intval()等函数仅返回转换后的值。
建议根据场景选择合适方式,并注意类型转换的边界条件(如浮点数精度、字符串格式等)。