数据类型转换
在PHP中,对两个变量进行操作时,若其数据类型不相同,则需要对其进行数据类型转换。通常情况下,数据类型转换分为自动类型转换和强制类型转换,下面对这两种数据类型转换进行详细介绍。
1. 自动类型转换
自动类型转换,是指当运算需要或与期望的结果类型不匹配时,PHP将自动进行类型转换,无需开发人员做任何操作。在程序开发过程中,最常见的自动类型转换有3种,分别为转换成布尔型、转换成整型和转换成字符串型。在转换时的具体细节如下。
- 转换成布尔类型时,整型值0、浮点型值0.0、空字符串、以及字符串“0”都会被转为false,其他值会被转为true。
- 布尔型转换成整型时,布尔值true转换成整数1;布尔值false转换成整数0。
- 浮点数转换成整数时,将向下取整。
- 字符串型转换为整型时,若字符串是以数字开始,则使用该数值,否则转换为0。
- 布尔型转换成字符串时,布尔值true转换成字符串“1”;布尔值false转换成空字符串。
- 整型或浮点型转换成字符串时,直接将数字转换成字符串形式。
为了大家更好地理解PHP自动数据类型的转换,表1列举了一些转换的示例。
表1 自动类型转换示例
转换类型 | 示例 | 输出结果 |
---|---|---|
转换成布尔型 | var_dump( 0 == false ); | bool(true) |
转换成布尔型 | var_dump( 3.14 == false ); | bool(false) |
转换成布尔型 | var_dump( 'abd' == false ); | bool(false) |
转换成布尔型 | var_dump( NULL == false ); | bool(true) |
转换成整型 | var_dump( '888php' == 888 ); | bool(true) |
转换成整型 | var_dump( 'php888' == 888 ); | bool(false) |
转换成整型 | var_dump( true + 1 ); | int(2) |
转换成字符串型 | var_dump( 'true is' . true ); | string(8) "true is1" |
转换成字符串型 | var_dump( '3' ); | string(1) "3" |
转换成字符串型 | var_dump( '3.14' ); | string(4) "3.14" |
在表1中,“==”运算符用来比较前后两个值是否相等,如果前后两个值的数据类型不同,就会自动转换成相同数据类型后再进行比较。
2. 强制类型转换
强制类型转换,就是在编写程序时手动转换数据类型,在要转换的数据或变量之前加上“(目标类型)”即可。如表2列举了PHP中强制转换的类型。
表2 强制类型转换
强制类型 | 功能描述 | 强制类型 | 功能描述 |
---|---|---|---|
(boolean) | 转为布尔型 | (float) | 转为浮点型 |
(string) | 转为字符串型 | (array) | 转为数组 |
(integer) | 转为整型 | (object) | 转为对象 |
为了让大家更好地理解,下面进行代码演示。
var_dump((boolean)-5.9); // 运行结果:bool(true)
var_dump((integer)'hello'); // 运行结果:int(0)
var_dump((float)false); // 运行结果:float(0)
var_dump((string)12); // 运行结果:string(2) "12"