数据类型:data type,在PHP中指的是数据本身的类型,而不是变量的类型。
PHP 是一种弱类型语言,变量本身没有数据类型。
把变量类比成一个杯子(容器),杯子可以装雪碧、可乐,雪碧或可乐是饮料类型,但这个杯子是没被规定必须装什么类型的!
在 PHP 中将数据分为三大类八小类——
基本数据类型:4个小类
- 整型:int,系统分配4或8个字节存储(32位机器为4,64位机器为8),表示整数类型
- 浮点型:float/double,float和int一样根据机器位数分配4或8个字节,double则固定分配8个字节存储,表示小数
- 字符串型:string,系统根据实际长度分配,表示字符串
- 布尔型:bool,表示布尔类型,只有两个值——true和false
复合数据类型:2个小类,
- 对象类型:object,存放对象(面向对象思想)
- 数组类型:array,存储多个数据
特殊数据类型:2个小类
- 资源类型:resource,存放资源数据(PHP 外部数据,如数据库、文件)
- 空类型:NULL,只有一个值就是 NULL(不能运算)
用gettype()函数可以获取变量的类型,格式为:gettype(变量名)
在很多的条件下,需要指定的数据类型。需要将外部数据(当前 PHP 取得的数据)转换成目标数据类型。
在 PHP 中有两种类型转换方式:
在转换过程中,用的比较多的是转布尔类型(在需要判断的情况下)和转数值类型(在需要算术运算的情况下)
在 PHP 中转变成bool类型后会是false的情况较少,故特殊记忆转为bool类型后值是false的值,其余则为true。
下面给出表格对照,可以观察到,主要是这几种形式的表达式的值转换为bool类型后会是false——
首先:所有数据类型转为float类型时,结果的类型都是double。
true转为1,false转为0,转浮点型时无论是float还是double,结果都为double,且不显示小数位。
以字符开头的字符串,转数值类型的结果的值,都为0
?以数字开头的字符串,
转int类型时,从左往右一直取到字符出现;转float/double类型时,小数点会取且只取一次
这部分作为补充内容,不建议记忆,需要用或者见到但不认识时去查阅一下,API太多了,能不记尽量不记。
gettype()函数获取变量的数据类型,如gettype($a);
is_xxx()函数判断某变量是不是xxx类型,如is_int($a);
settype()函数设置某变量的类型,如settype($a, "int")
注意settype()函数和强制转换的区别,强制转换是复制一份数据进行转换,而settype()函数是直接对原数据的类型进行设置。