首页 > 编程笔记 > PHP笔记 阅读:1

PHP数据类型大全(附带实例)

任何一门编程语言都离不开对数据的处理,每个数据都有其对应的数据类型,不同的数据类型可以存储不同的数据。

本节将对 PHP 中的数据类型进行详细讲解。

PHP数据类型分类

PHP 的数据类型分为 3 类,分别是标量类型、复合类型和特殊类型,具体如下图所示:


图 1 PHP的数据类型

下面对标量类型中的布尔型、整型、浮点型和字符串型进行讲解。

PHP布尔型

布尔型有 true 和 false 两个值,表示逻辑上的“真”和“假”,true 和 false 不区分大小写,通常使用布尔型的值进行逻辑判断。

下面定义两个布尔型变量,示例代码如下:
$flag1 = true;
$flag2 = false;
在上述示例代码中,将 true 赋值给变量 $flag1,将 false 赋值给变量 $flag2。

PHP整型

整型用于表示整数,可以是二进制数、八进制数、十进制数和十六进制数,且前面可以加上“+”或“-”符号,表示正数或负数。

在计算机中,二进制数、八进制数和十六进制数是常用的表示数字的方式,二进制数、八进制数和十六进制数的表示方式如下:
下面使用二进制数、八进制数、十进制数和十六进制数定义整型变量,示例代码如下:
$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)
在上述示例代码中:

相关文章