php是弱类型语言,在不同类型之间进行运算操作会发生数据类型的转换。传递给函数的参数或是函数的返回值也会根据函数的类型约束进行强制转换。
我们也可以通过强制性的类型转换。php基本数据类型之间都是可以互相转换的,非常灵活。
尽量掌握核心的几种转换类型非常重要,可以在开发中减少bug,同时也能提升开发效率。
php的基本数据类型主要有如下几种:字符串、整数、浮点数、布尔型、数组、对象、NULL。下面我们依据这七种类型,对他们进行互相转换。
一、转换为字符串
整数:转换为整数类型的字符串。如数字 0 将转换为字符串“0”。
浮点数:转换为浮点类型的字符串。小数部分的最后一位如果是零会被忽略。如浮点数 1.8 将转换为字符串“1.8”,浮点数 0.0 将转换为字符串“0”。
布尔型:true为字符串“1”,false为空字符串""。
数组:不建议这样做。任何数组强转为字符串输出字符串 "Array"
对象:对象需实现__toString魔术方法,输出该__toString的返回值。
NULL:为空字符串""。
二、转换为布尔型:
字符串:字符串"","0"为false,其余为true。这里要注意只有"0"是false,"0.0"是true。
整数:整数0为false,其余为true。
浮点数:浮点数0.0为false,其余为true。
数组:空数组为false,其余为true。
对象:对象为true。
NULL:为false。
三、转换为整数:
字符串:看字符串的开头,能转为数字则为数字,不能转则为0。 对于数字不含. e E转为整数,其余为浮点数。
浮点数:舍弃小数位,只保留整数部分。不四舍五入。
布尔型:true为整数1,false为整数0
数组:空数组为0,其余为1。
对象:不支持,对象转整数为非法操作。
NULL:为0。
四、转换为浮点数:
字符串:看字符串的开头,能转为数字则为数字,不能转则为0。 对于数字不含. e E转为整数,其余为浮点数。
整数:将整数转为浮点类型的数字。
布尔型:true为浮点数1,false为浮点数0
数组:空数组为0,其余为1。
对象:不支持,对象转整数为非法操作。
NULL:为0。
五、转换为数组:
字符串:转换为包含一个元素的索引数组,数组的元素为该字符串。
整数:转换为包含一个元素的索引数组,数组的元素为该整数。
浮点数:转换为包含一个元素的索引数组,数组的元素为该浮点数。
布尔型:转换为包含一个元素的索引数组,数组的元素为该布尔值。
对象:将对象的公开属性转换为数组的键值对,非公开的属性在数组中键为特殊命名。
NULL:转换为空数组。
六、转换对象:
所有类型都将转换为内置的stdClass类型的对象。
字符串:转为stdClass对象,对象有一个scalar属性值为该字符串。
整数:转为stdClass对象,对象有一个scalar属性值为该整数。
浮点数:转为stdClass对象,对象有一个scalar属性值为该浮点数。
布尔型:转为stdClass对象,对象有一个scalar属性值为该布尔型。
数组:转为stdClass对象,数组的键值对转为对象的公开属性。
NULL:转为stdClass对象,无属性。
七、转换为NULL
NULL不支持转换,可以将任何变量使用unset函数将其设置为null。
NULL 类型只有一个值,就是不区分大小写的常量 NULL。
在下列情况下一个变量被认为是 NULL:
被赋值为 NULL。
尚未被赋值。
被 unset()。