PHP数据类型大全(附带实例)
任何一门编程语言都离不开对数据的处理,每个数据都有其对应的数据类型,不同的数据类型可以存储不同的数据。
本节将对 PHP 中的数据类型进行详细讲解。

图 1 PHP的数据类型
下面对标量类型中的布尔型、整型、浮点型和字符串型进行讲解。
下面定义两个布尔型变量,示例代码如下:
在计算机中,二进制数、八进制数和十六进制数是常用的表示数字的方式,二进制数、八进制数和十六进制数的表示方式如下:
下面使用二进制数、八进制数、十进制数和十六进制数定义整型变量,示例代码如下:
整数在 32 位操作系统中的取值范围是 -2147483648~2147483647,在 64 位操作系统中的取值范围是 -9223372036854775808~9223372036854775807。当定义的整数超出操作系统的取值范围时,整数会被转换为浮点数。
下面以 64 位操作系统为例,演示整型数值超出取值范围的情况,示例代码如下:
浮点数的有效位数是 14 位,有效位数是指从最左边第一个不为0的数开始,直到末尾数的个数,且不包括小数点。
在 PHP 中,通常使用两种方式表示浮点数,分别是标准格式和科学记数法格式。下面使用标准格式定义浮点型变量,示例代码如下:
科学记数法是一种记数的方法,用于表示一个数与 10 的 n 次幂相乘的形式。在代码中一般使用 E 或 e 表示 10 的幂。例如,5×10^3 可以写成 5E3 或 5e3。
下面定义字符串型变量,示例代码如下:
下面演示在单引号字符串和双引号字符串中使用变量,示例代码如下:
当双引号字符串中出现变量时,可能会出现变量名和字符串混淆的情况。为了能够让 PHP 识别双引号字符串中的变量名,可以使用“{}”对变量名进行界定,示例代码如下:
在双引号字符串中使用双引号时,使用“\"”表示双引号,在单引号字符串中使用单引号时,使用“\'”表示单引号,示例代码如下:
转义字符是用于改变字符的解释或含义的特殊字符序列,通常使用转义字符表示一些特殊字符或执行指定的操作。当反斜线与特定的字母或字符组合在一起时,会产生特定的效果。
双引号字符串还支持其他常用转义字符,具体如下表所示:
需要说明的是,在单引号字符串中使用转义字符时,转义字符会被原样输出。
为了检测数据的数据类型是否符合预期,PHP 提供了一组形式为“is_*()”的内置函数,函数的参数是要检测的数据,函数的返回值是检测结果,返回值 true 表示数据类型符合预期,返回值 false 表示数据类型不符合预期。
数据类型检测函数如下表所示:
表中,函数的参数 $value 前面的 mixed 表示参数 $value 允许的数据类型,mixed 是一种伪类型,表示允许多种不同的数据类型。另外,在称呼 PHP 中的函数时,通常省略函数的参数,如 is_bool() 函数、is_string() 函数。
为了便于读者理解数据类型检测函数的使用,下面使用 var_dump() 输出数据类型检测函数的结果,示例代码如下:
本节将对 PHP 中的数据类型进行详细讲解。
PHP数据类型分类
PHP 的数据类型分为 3 类,分别是标量类型、复合类型和特殊类型,具体如下图所示:
图 1 PHP的数据类型
下面对标量类型中的布尔型、整型、浮点型和字符串型进行讲解。
PHP布尔型
布尔型有 true 和 false 两个值,表示逻辑上的“真”和“假”,true 和 false 不区分大小写,通常使用布尔型的值进行逻辑判断。下面定义两个布尔型变量,示例代码如下:
$flag1 = true; $flag2 = false;在上述示例代码中,将 true 赋值给变量 $flag1,将 false 赋值给变量 $flag2。
PHP整型
整型用于表示整数,可以是二进制数、八进制数、十进制数和十六进制数,且前面可以加上“+”或“-”符号,表示正数或负数。在计算机中,二进制数、八进制数和十六进制数是常用的表示数字的方式,二进制数、八进制数和十六进制数的表示方式如下:
- 二进制数由 0 和 1 组成,需要加前缀 0b 或 0B;
- 八进制数由 0~7 组成,需要加前缀 0;
- 十六进制数由 0~9 和 A~F(或 a~f)组成,需要加前缀 0x 或 0X。
下面使用二进制数、八进制数、十进制数和十六进制数定义整型变量,示例代码如下:
$bin = 0b111011; // 二进制数 $oct = 073; // 八进制数 $dec = 59; // 十进制数 $hex = 0x3b; // 十六进制数在上述示例代码中,二进制数 0b111011、八进制数 073 和十六进制数 0x3b 转换成十进制数都是 59。
整数在 32 位操作系统中的取值范围是 -2147483648~2147483647,在 64 位操作系统中的取值范围是 -9223372036854775808~9223372036854775807。当定义的整数超出操作系统的取值范围时,整数会被转换为浮点数。
下面以 64 位操作系统为例,演示整型数值超出取值范围的情况,示例代码如下:
$number1 = 9223372036854775807; // 正常取值范围的整型数据 var_dump($number1); // 输出结果:int(9223372036854775807) $number2 = 9223372036854775808; // 超出取值范围的整型数据 var_dump($number2); // 输出结果:float(9.223372036854776E+18)从上述示例代码的输出结果可以看出,变量 $number2 的值超出系统的取值范围,被转换为了浮点数。
PHP浮点型
浮点型用于表示浮点数,程序中的浮点数类似数学中的小数。浮点数的有效位数是 14 位,有效位数是指从最左边第一个不为0的数开始,直到末尾数的个数,且不包括小数点。
在 PHP 中,通常使用两种方式表示浮点数,分别是标准格式和科学记数法格式。下面使用标准格式定义浮点型变量,示例代码如下:
$fnum1 = 1.759; $fnum2 = -4.382;当浮点数的位数较多时,使用科学记数法格式可以简化浮点数的书写形式。
科学记数法是一种记数的方法,用于表示一个数与 10 的 n 次幂相乘的形式。在代码中一般使用 E 或 e 表示 10 的幂。例如,5×10^3 可以写成 5E3 或 5e3。
PHP字符串型
字符串型用于表示字符串,字符串是由连续的字符组成的字符序列,需要使用单引号或双引号标注。下面定义字符串型变量,示例代码如下:
$str1 = 'Hello'; // 单引号字符串 $str2 = "PHP"; // 双引号字符串单引号字符串和双引号字符串的区别是:如果字符串中包含变量,单引号字符串中的变量不会被解析,只会将变量作为普通字符处理,而双引号字符串中的变量会被解析成具体的值。
下面演示在单引号字符串和双引号字符串中使用变量,示例代码如下:
$country = '中国'; echo '张三来自$country'; // 输出结果:张三来自$country echo "张三来自$country"; // 输出结果:张三来自中国在上述示例代码中,单引号字符串中的变量 $country 被原样输出,双引号字符串中的变量 $country 被解析为“中国”。
当双引号字符串中出现变量时,可能会出现变量名和字符串混淆的情况。为了能够让 PHP 识别双引号字符串中的变量名,可以使用“{}”对变量名进行界定,示例代码如下:
$ap = 'ma'; $apple = 'test'; echo "$apple"; // 输出结果:test echo "{$ap}ple"; // 输出结果:maple在上述示例代码中,当变量 $ap 与字符串 ple 连在一起时,会被当成 $apple 变量,此时使用“{}”将变量 $ap 标注起来,即可正确解析 $ap 变量。
在双引号字符串中使用双引号时,使用“\"”表示双引号,在单引号字符串中使用单引号时,使用“\'”表示单引号,示例代码如下:
echo "在双引号字符串中使用\"双引号\""; // 输出结果:在双引号字符串中使用"双引号" echo '在单引号字符串中使用\'单引号\''; // 输出结果:在单引号字符串中使用'单引号'从上述示例代码可以看出,在单引号和双引号前面添加反斜线“\”,可以实现单引号和双引号的原样输出,这种添加反斜线的字符(如“\"”“\'”)又被称为转义字符。
转义字符是用于改变字符的解释或含义的特殊字符序列,通常使用转义字符表示一些特殊字符或执行指定的操作。当反斜线与特定的字母或字符组合在一起时,会产生特定的效果。
双引号字符串还支持其他常用转义字符,具体如下表所示:
转义字符 | 含义 |
---|---|
\n | 换行(ASCII 字符集中的 LF) |
\r | 回车(ASCII 字符集中的 CR) |
\t | 水平制表符(ASCII 字符集中的 HT) |
\nv | 垂直制表符(ASCII 字符集中的 VT) |
\e | Escape(ASCII 字符集中的 ESC) |
\f | 换页(ASCII 字符集中的 FF) |
\\ | 反斜线 |
\$ | 美元符 |
需要说明的是,在单引号字符串中使用转义字符时,转义字符会被原样输出。
PHP数据类型检测
当对数据进行运算时,数据类型不符合预期可能会导致程序出错。例如,两个数字相加,这两个数字的数据类型应该是整型或浮点型,如果是其他数据类型,运算可能会出错。为了检测数据的数据类型是否符合预期,PHP 提供了一组形式为“is_*()”的内置函数,函数的参数是要检测的数据,函数的返回值是检测结果,返回值 true 表示数据类型符合预期,返回值 false 表示数据类型不符合预期。
数据类型检测函数如下表所示:
函数 | 功能描述 |
---|---|
is_bool(mixed $value) | 检测是否为布尔型 |
is_string(mixed $value) | 检测是否为字符串型 |
is_float(mixed $value) | 检测是否为浮点型 |
is_int(mixed $value) | 检测是否为整型 |
is_null(mixed $value) | 检测是否为空值 |
is_array(mixed $value) | 检测是否为数组 |
is_resource(mixed $value) | 检测是否为资源 |
is_object(mixed $value) | 检测是否为对象 |
is_numeric(mixed $value) | 检测是否为数字或由数字组成的字符串 |
表中,函数的参数 $value 前面的 mixed 表示参数 $value 允许的数据类型,mixed 是一种伪类型,表示允许多种不同的数据类型。另外,在称呼 PHP 中的函数时,通常省略函数的参数,如 is_bool() 函数、is_string() 函数。
为了便于读者理解数据类型检测函数的使用,下面使用 var_dump() 输出数据类型检测函数的结果,示例代码如下:
var_dump(is_bool('1')); // 输出结果: bool(false) var_dump(is_string('php')); // 输出结果: bool(true) var_dump(is_float(23)); // 输出结果: bool(false) var_dump(is_int(23.0)); // 输出结果: bool(false) var_dump(is_numeric(45.6)); // 输出结果: bool(true)在上述示例代码中:
- 使用 is_bool() 函数检测字符串“1”是不是布尔型,输出结果为 false;
- 使用 is_string() 函数检测字符串“php”是不是字符串型,输出结果为 true;
- 使用 is_float() 函数检测数字 23 是不是浮点型,输出结果为 false;
- 使用 is_int() 函数检测数字 23.0 是不是整型,输出结果为 false;
- 使用 is_numeric() 函数检测数字 45.6 是不是数字或由数字组成的字符串,输出结果为 true。