PHP 7+MySQL 8动态网站开发从入门到精通(视频教学版)
上QQ阅读APP看书,第一时间看更新

3.5 数据类型

从PHP 4开始,PHP中的变量不需要事先声明,赋值时也就同时声明了变量。在使用这些数据类型前,读者需要了解它们的含义和特性。下面介绍整数类型、浮点类型、布尔类型、字符串类型、数组类型、对象类型以及NULL和Resource两个比较特殊的类型。

3.5.1 什么是类型

不同的数据类型其实就是所存储数据的不同种类。PHP的不同数据类型主要包括:

· 整数类型(Integer),用来存储整数。

· 浮点类型(Float),用来存储实数。

· 字符串类型(String),用来存储字符串。

· 布尔类型(Boolean),用来存储真(true)或假(false)。

· 数组类型(Array),用来存储一组数据。

· 对象类型(Object),用来存储一个类的实例。

作为弱类型语言,PHP也被称为动态类型语言。在强类型语言(例如C语言)中,一个变量只能存储一种类型的数据,并且这个变量在使用前必须声明变量类型。在PHP中,给变量赋什么类型的值,这个变量就是什么类型,例如以下几个变量:

    $hello = "hello world";

由于hello world是字符串,因此变量$hello的数据类型就是字符串类型。

    $hello = 100;

同样,由于100为整数类型,因此变量$hello的数据类型就是整数类型。

    $wholeprice = 100.0;

由于100.0为浮点类型,因此变量$wholeprice的数据类型就是浮点类型。

由此可见,对于变量而言,如果没有定义变量的类型,则它的类型由所赋值的类型决定。

3.5.2 整数类型

整数类型是数据类型中最为基本的类型。在现有的32位系统中,常规整数类型的取值是从-2147483648到+2147483647。整数类型可以表示为二进制、八进制、十进制和十六进制。

要使用二进制表达,数字前必须加上0b;要使用八进制表达,数字前必须加上0;要使用十六进制表达,数字前必须加上0x。

例如:

提 示

在PHP 7中,整型值的字长可以用常量PHP_INT_SIZE来表示,最大值可以用常量PHP_INT_MAX来表示,最小值可以用常量PHP_INT_MIN来表示。整型数的字长和平台有关,32位平台下的最大值是2147483647,64位平台下的最大值通常大约是9223372036854775807。

3.5.3 浮点类型

浮点类型用于表示实数。在大多数计算平台中,这个数据类型的大小为8个字节。它的近似取值范围是2.2E-308~1.8E+308(科学计数法)。

例如:

    -1.432
    1E+07
    0.0

3.5.4 布尔类型

布尔类型只有两个值,就是true和false。布尔类型是十分有用的数据类型,通过它程序实现了逻辑判断的功能。

其他的数据类型基本都有布尔属性:

· 整数类型:为0时,其布尔属性为false;为非零值时,其布尔属性为true。

· 浮点类型:为0.0时,其布尔属性为false;为非零值时,其布尔属性为true。

· 字符串类型:为空字符串""或者零字符串"0"时,其布尔属性为false;包含除此以外的字符串时,其布尔属性为true。

· 数组类型:不含任何元素,其布尔属性为false;只要包含元素,其布尔属性就为true。

· 对象类型和资源类型:其布尔属性永远为true。

· NULL类型:其布尔属性永远为false。

3.5.5 字符串类型

字符串类型的数据是表示在引号之间的。引号分为双引号“"”和单引号“'”。这两种引号都可以用来表示字符串,但也有一定区别。

双引号几乎可以包含所有的字符,但是包含其中的变量名会显示出变量的值,而不是显示出变量的名字,有些特殊字符加上“\”符号即可(转义字符);单引号内的字符则都是直接显示出来而不管是否含有变量与否。

下面通过一个案例来讲述整类型、浮点类型、布尔类型和字符串类型数据的使用方法和技巧。

【例3.10】(实例文件:源文件\ch03\3.10.php)

本程序的运行结果如图3-10所示。

图3-10 程序的运行结果

3.5.6 数组类型

数组是PHP变量的集合,是按照“键值”与“值”的对应关系组织数据的。数组的键值既可以是整数,也可以是字符串。另外,数组不特意表明键值的默认情况下,数组元素的键值为从零开始的整数。

在PHP中,一般通过调用list()函数或array()函数来创建数组,也可以直接进行赋值。

下面调用array()函数创建数组。

【例3.11】(实例文件:源文件\ch03\3.11.php)

本程序的运行结果如图3-11所示。

图3-11 程序的运行结果

【案例分析】

(1)程序中用“=>”为数组赋值,数组的下标只是存储的标识,没有任何意义,数组元素的排列以加入的先后顺序为准。

(2)本程序采用for循环语句输出整个数组,其中count函数返回数组的个数,echo函数显示输出当前数组的内容(通过数组指针进行索引),后面的章节将详细讲述echo函数的使用方法。

上面实例的程序语句可以简化如下。

【例3.12】(实例文件:源文件\ch03\3.12.php)

本程序运行结果如图3-12所示。从结果可以看出,这两种写法的运行结果相同。

图3-12 程序运行结果

另外,还可以对数组的元素一个一个地赋值,下面举例说明。上面的程序语句可以简化如下。

【例3.13】(实例文件:源文件\ch03\3.13.php)

本程序的运行结果如图3-13所示。从结果可以看出,一个一个赋值的方法和上面两种写法的运行结果一样。

图3-13 程序的运行结果

3.5.7 对象类型

对象就是类的实例。当一个类被实例化以后,生成的对象就被传递给一个变量,这个变量就是对象类型的变量,简称对象变量。对象类型的变量也属于资源类型的变量。

3.5.8 NULL类型

NULL类型是仅拥有NULL这个值的数据类型。这个数据类型用来标记一个变量为空。一个空字符串与NULL是不同的。在数据库存储时会把空字符串和NULL区分开处理。NULL类型在布尔判断时永远为false。在很多情况下,声明一个变量的时候可以直接先赋值为NULL类型,如$value = NULL。

3.5.9 资源类型

资源(Resource)类型是十分特殊的数据类型。它表示PHP的扩展资源,可以是一个打开的文件,也可以是一个数据库连接,甚至可以是其他的数据类型。在编程过程中,资源类型几乎是永远接触不到的。

3.5.10 数据类型之间的相互转换

将数据从一个类型转换到另一个类型就是数据类型转换。在PHP语言中,有两种常见的转换方式:自动数据类型转换和强制数据类型转换。

1.自动数据类型转换

这种转换方法最为常用,直接输入数据的转换类型即可。

【例3.14】(实例文件:源文件\ch03\3.14.php)

本程序的运行结果如图3-14所示。

图3-14 自动数据类型转换

2.强制数据类型转换

在PHP语言中,可以调用settype函数强制转换数据类型,基本语法如下:

提 示

type的可能值不能包含资源类型数据。如果转型成功,就返回1,否则返回0。

【例3.15】(实例文件:源文件\ch03\3.15.php)

本程序的运行结果如图3-15所示。这里返回结果为1,说明浮点数100.86转型为整数100已经成功。

图3-15 程序的运行结果