
2.3 PHP的数据类型
2.3.1 数据类型

PHP一共支持8种原始数据类型,其中包括四种标量类型,即integer(整型)、float/double(浮点型)、string(字符串型)和boolean(布尔型);两种复合数据类型,即array(数组)和object(对象);两种特殊数据类型,即resource(资源)与null(空)。数据类型及说明如表2.1所示。
表2.1 数据类型及说明

输出个人信息
本实例将使用echo语句输出个人信息,包括“姓名”“性别”“年龄”“身高”“体重”,代码如下:

上述代码中,包含的数据类型有字符串型、整型和浮点型,运行结果如图2.1所示。

图2.1 个人信息输出结果
学习笔记
上述代码中,“.”是字符串连接符,“<br>”是换行标记,“echo”是PHP的输出语句,可将文本内容显示在浏览器上。常用的输出语句还有var_dump()函数和print_r()函数。
2.3.2 数据类型转换

PHP是弱类型语言(或动态语言),不需要像C语言一样在使用变量前必须先声明变量的类型。在PHP中,变量的类型是由赋给它的值确定的。例如:

学习笔记
代码中“=”不是数学中的“等于”,它是赋值操作符,将“=”右边的值赋给“=”左边的变量。
上述代码中,变量var1为字符串型,变量var2为整型。虽然PHP不需要先声明变量的类型,但是有时仍然需要用到类型转换。PHP中的类型转换非常简单,只需在变量前加上用括号括起来的类型名称即可。类型强制转换如表2.2所示。
表2.2 类型强制转换

学习笔记
在进行类型转换的过程中应该注意以下内容:转换为布尔型时,null、0和未赋值的变量或数组会被转换为false,其他为true。转换为整型时,布尔型的false转换为0,true转换为1;浮点型的小数部分被舍去;如果字符串型以数字开头就截取到非数字位,否则输出0。
类型转换还可以通过settype()函数来完成,该函数可以将指定的变量转换成指定的数据类型。

参数var为指定的变量,参数type为指定的类型,参数type有7个可选值,即boolean、float、integer、array、null、object和string。如果转换成功则返回true,否则返回false。
当字符串型转换为整型或浮点型时,如果字符串是以数字开头的,就会先把数字部分转换为整型,再舍去后面的字符串;如果数字中含有小数点,则会取到小数点前一位。
将指定的字符串进行类型转换
本实例使用以上两种方法将指定的字符串进行类型转换,并比较两种方法之间的不同。代码如下:

运行结果如图2.2所示。

图2.2 类型转换
可以看到,使用(int)能直接输出转换后的变量类型,并且原变量不发生任何变化。而使用settype()函数返回的是布尔值,也就是true,原变量发生了改变。在实际应用中,可根据实际情况自行选择转换方式。
2.3.3 检测数据类型

PHP还内置了检测数据类型的系列函数,可以对不同类型的数据进行检测,判断其是否属于某种数据类型,如果属于某种数据类型则返回true,否则返回false。检测数据类型的函数如表2.3所示。
表2.3 检测数据类型的函数

由于检测数据类型的函数的功能和用法都是相同的,下面使用is_numeric()函数来检测变量中的数据是否全由数字组成,从而了解并掌握is系列函数的用法。代码如下:

输出结果如下:
