参考资料:《细说PHP》、《PHP、MySQL与JavaScript学习手册》
变量的类型
变量类型指保存在该变量中的数据类型。PHP是一种弱类型检查的语言,这意味着变量在使用前可以不被声明,PHP总是在访问变量时根据它们的内容将变量转换为相应的类型,具体什么类型由存放的内容决定。
类型介绍
PHP支持八种数据类型:
- 4种标量类型
- 布尔型(boolean)
- 整型(integer)
- 浮点型(float, double)
- 字符串(string)
- 2种复合类型
- 数组(array)
- 对象(object)
- 2种特殊类型
- 资源(resource)
- NULL
如果想查看某个表达式的值和类型,可以使用函数var_dump()。
布尔型
布尔型表达了“真”或“假”,在进行关系运算和布尔运算时,返回的都是布尔结果。
在PHP中布尔类型不只是有TRUE和FALSE两种结果。当需要一个布尔参数时,所有的值在PHP中都会自动转换成布尔类型的值。
在转换时,以下将被认为是FALSE,所有其他值都被认为是TRUE:
- 布尔值FALSE
- 整型值0
- 浮点型值0.0
- 空白字符串和字符串“0”
- 没有成员变量的数组
- 没有单元的对象(仅PHP4)
- 特殊类型NULL
- 尚未设定的变量
整型
整型变量用于存储整数。
整型变量不仅是在数据前加上可选的符号+或-表示正负数,也不仅有十进制数,还可以用十六进制(数字前必须加0x)和八进制数(数字前必须加0)来表示。
注意:PHP不支持无符号整数。如果一个数超过了整型的范围,将会被解释为float型,如果结果超出了整型的范围,也会返回float型。
浮点型
浮点数是含小数部分的数,通常用来表示整数无法表示的数据。
注意:浮点数只是一种近似的数值,所以浮点数的结果并没有精确到最后一位。如果确实需要更高的精度,应该使用任意精度数学函数或者gmp()函数。
字符串
字符串是一系列字符。在PHP中,字符和字节是一样的。
字符串可以使用单引号,双引号,定界符三种字面上的方法来定义。
单引号
指定一个字符串最简单的方法是用单引号括起来。在单引号中不能再包含单引号,否则会有错误发生。如果确实需要包含,需要使用反斜线\来转义。
在单引号字符串中出现的变量不会被变量的值替代,也就是说,PHP不会解析单引号中的变量,而是将变量名原样输出。
因此,如果没有特别的需求,应该使用单引号定义字符串。
双引号
双引号字符串最重要的一点就是其中的变量名会被变量值所替代,也就是说,可以解析双引号中的包含变量。
如果是复杂的语法,可以使用花括号括起一个表达式。例如:
例1 使用花括号括起一个表达式
定界符
给字符串定界还可以使用定界符"<<<"。
应该在定界符之后提供一个标识符开始,然后是包含的字符串,最后是同样的标识符结束字符串。结束标识符必须从行的第一列开始,并且后面除了分号以外不能包含其他任何字符。
定界标记使用的标识符也必须遵循PHP中其他任何标签的命名规则。
注意:结束标识符所在的行不能包含任何其他字符,这意味着该标识符不能被缩进。在结束标识符前的第一个字符必须是操作系统中定义的换行符。
例2 使用定界符
注意:定界符不能初始化类的成员,其余与双引号相同。
数组
数组是PHP中一种重要的复合数据类型。
数组可以存放多个数据,并且可以存放任何类型的数据。
PHP中,可以使用多种方法构造一个数组。这里使用array()语言结构构造一个新的数组,它接受一定数量用逗号分隔的key=>value对。
例 3 定义一个数组
"bar", 12=>true);
?>
对象
对象和数组都是一种复合数据类型。
一个对象类型的变量,是由一组属性值和一组方法构成的,其中属性表明对象的一种状态,方法通常用来表明对象的功能。
要初始化一个对象,使用new语句将对象实例化到一个变量中。
资源类型
资源是一种特殊类型的变量,保存了到外部资源的一个引用。资源是通过专门的函数来建立和使用的。
NULL类型
NULL值表示一个变量没有值,NULL类型唯一可用的值就是NULL。
在下列情况下一个变量将被认为是NULL:
- 将变量赋值为NULL
- 声明的变量尚未被赋值
- 被unset()销毁的变量
伪类型
伪类型并不是基本的数据类型,而是因为由于PHP是弱类型语言,所以在一些函数中,一个参数可以接受多种类型的数据,还可以接受别的函数作为回调函数的使用。
常用的伪类型如下:
- mixed:一个参数可以接受多种不同的类型。
- number:一个参数可以是integer和float。
- callback:有些函数接受用户自定义的函数方法作为一个参数。