数据类型之两种特殊类型

在关于变量的章节中,我们已经知道 PHP 支持 9 种原始数据类型,在这里我们再次复习一下:

四种标量类型

  • Boolean:布尔值。仅有两个值,TRUEFALSE
  • Integer:整数型
  • Float:浮点数,也称作double,表示带小数点的小数,例如66.66
  • String:字符串

三种复合类型

  • Array:数组
  • Object:对象
  • Callable:可调用类型

两种特殊类型

  • Resource:资源类型,保存了到外部资源的一个引用
  • NULL:表示一个变量没有值,只有唯一的可能值NULL

复习完毕,上一节我们了解了数据类型的三种复合类型,现在我们来了解两种特殊类型

Resource:资源类型

资源类型是一种特殊的变量,它保存到外部资源的一个引用,例如打开文件、连接数据库、画图等。资源通过专门的函数来建立和使用,常见的资源类型有:curlftpgdmysql linkmysql resultstreamsocket等。请看示例代码:

<?php

$fp = fopen(__DIR__ . '/test.txt', 'rw');
var_dump($fp);// 输出:resource(5) of type (stream)
fclose($fp);

其中输出的resource(5)中的数字5代表资源ID为5,资源类型为stream

注册的资源变量都会存储在一个Hash Table中,资源 ID 是该资源所在Hash Tablekey值。

NULL:空值

不同于未定义变量和空字符串,空值,代表一个变量没有任何值。NULL 类型唯一的可能值就是NULL

当一个变量处于以下情况时被认为是NULL值:

  • 被直接赋值为NULL
  • 尚未被赋值
  • unset()unset()函数销毁一个变量

示例代码:

<?php

$null = NULL;
var_dump($null);// 输出:NULL

$val = '我原本是一个字符串';
// (unset)返回NULL值但不改变原值。该强制类型转换从PHP 7.2 开始不推荐使用
(unset)$val;
var_dump($val);// 输出:string(27) "我原本是一个字符串"

var_dump((unset)$val);// 输出:NULL

// 销毁变量
unset($val);
var_dump($val);// 此时$val未定义,该值为 NULL

可使用is_null()函数检测变量是否为NULL


关于 PHP 的数据类型就讲到这里了,下一章我们讲解 PHP 中的运算符!