类型转换是指将变量或值从一种数据类型转换成其他数据类型。转换的方法有两种,一种是自动转换,一种是强制转换。在PHP中可以根据变量或值的使用环境自动将其转换为最合适的数据类型,也可以根据需要强制转换为用户指定的类型。因为PHP在变量的定义中不需要或不支持明示的类型定义,变量类型是根据使用变量的上下文所决定的,所以在PHP中如果没有明确的要求类型转换,那可以使用默认的类型自动转换。
1、自动类型转换
每一个数据都有它的类型,具有相同类型的数据才能彼此操作。在PHP中,自动转换通常发生在不同数据类型的变量进行混合运算时。若参与运算量的类型不同,则先转换成同一类型,然后再进行运算。通常只有4种标量类型才使用自动类型转换。注意这并没有改变这些运算数本身的类型,改变的仅是这些运算数如何被求值。自动类型转换虽然是由系统自动完成的,但在混合运算时,自动转换要遵循转换数据长度增加的方向进行,以保证精度不降低。
2、强制类型转换
- (int)(integer):转换成整型
- (bool)(boolean):转换成布尔型
- (float)(double)(real):转换成浮点型
- (string):转换成字符串
- (array):转换成数组
- (object): 转换成对象
3、类型转换细节
整型转化为浮点型,由于浮点型的精度范围大于整型,所以转化后的精度不会改变。
浮点型转化为整型,将自动舍弃小数点部分,只保留整数部分。如果一个浮点数超过整形数字的有效范围,其结果是不确定的。
当字符串转化为数字时,转化后的数字是从字符串开始部分的数值型字符串,数值型字符串包括用科学计算法表示的数字。
NULL转为字符串,为空字符。
4、变量类型的测试函数
<?php
is_bool(); //判断是否为布尔型
is_int();is_integer();is_long(); //判断是否为整型
is_float();is_double();is_real(); //判断是否为浮点数
is_string(); //判断是否为字符串
is_array(); //判断是否为数组
is_object(); //判断是否为对象
is_readable(); //判断是否是资源类型
is_null(); //判断是否为空
is_scalar(); //判断是否是标量,是否为一个整数、浮点数、布尔型、字符串
is_numeric(); //判断是否是任何类型的数字或数字字符串
is_callable(); //判断是否是有效的函数名