PHP 两种数据类型 — resource 和 NULL — 被归类为特殊类型。资源类型的对象是指外部资源,如数据库连接、文件流等。另一方面,NULL 数据类型是没有为其分配任何数据的变量。在本章中,我们将更多地了解这些类型。
资源(Resource)类型
PHP 程序通常需要与外部环境(如数据库、磁盘文件等)进行交互。这些在 PHP 中被视为 资源(Resource )。Resource 是一种特殊的数据类型,指的是任何此类外部资源。PHP 使用相关函数来创建这些资源。例如,fopen() 函数打开一个磁盘文件,其引用存储在 resource 变量中。
PHP Zend 引擎使用引用计数系统。因此,垃圾回收器会自动销毁引用计数为零的 resource ,并且不需要手动释放 resource 数据类型使用的内存。
不同内置 PHP 函数返回相应的 resource 变量。随后,PHP 使用它们与相应的外部环境进行交互。例如,fopen() 函数返回一个文件资源,该资源( Resource )充当文件句柄,并且此 resource 变量有助于对文件执行读/写操作。
下表总结了返回 resource 变量的不同函数 -
Resource 类型 | 内置函数 | 定义 | |
---|---|---|---|
建立 | 销毁 | ||
bzip2 | bzopen() | bzclose() | Bzip2 文件 |
curl | curl_init() | curl_close() | Curl session |
ftp | ftp_connect(), | ftp_close() | FTP 流 |
mssql link | mssql_connect() | mssql_close() | 链接到 Microsoft SQL Server 数据库 |
mysql link | mysql_connect() | mysql_close() | 链接到 MySQL 数据库 |
mysql result | mysql_db_query(), | mysql_free_result() | MySQL 结果 |
oci8 connection | oci_connect() | oci_close() | 连接到 Oracle 数据库 |
ODBC link | odbc_connect() | odbc_close() | 链接到 ODBC 数据库 |
pdf document | pdf_new() | pdf_close() | PDF 文档 |
stream | opendir() | closedir() | Dir 句柄 |
stream | fopen(), tmpfile() | fclose() | File 句柄 |
socket | socket_create() | Socket_close() | Socket 句柄 |
xml | xml_parser_create() | xml_parser_free() | XML 解析器 |
zlib | gzopen() | gzclose() | gz 压缩文件 |
zlib.deflate | deflate_init() | None() | 增量 deflate 上下文 |
zlib.inflate | inflate_init() | None() | 增量 inflate 上下文 |
PHP 有 get_resource_type() 函数,它返回变量的 Resource 类型。
get_resource_type ( resource $handle ) : string
其中 $handle 是要获取其类型的资源变量。此函数返回与资源类型对应的字符串。
还有 get_resource_id() 函数,一个给定资源的整数标识符。
get_resource_id(resource $resource): int
例子
此函数提供了一种类型安全的方法,用于为给定资源生成整数标识符。
<?php
$fp = fopen("hello.php", "r");
$resource = get_resource_type($fp);
$id = get_resource_id($fp);
echo "Resource 类型为 : $resource ,Resource ID为 : $id";
?>
它将产生以下输出 -
NULL 类型
在 PHP 中,没有值的变量称为 null 数据类型。此类变量的值定义为 NULL。可以使用 unset() 函数将变量显式分配为 NULL 或将其值设置为 null。
$var=NULL;
可以将其他类型的变量转换为 null,尽管从 PHP 7.2 开始已弃用将 null 转换为其他类型的变量。在早期版本中,使用 (unset)$var 语法进行转换
例子
以下示例演示如何将 NULL 分配给变量
<?php
$var=NULL;
var_dump($var);
?>
它将产生以下输出 -
例子
以下示例对其他主变量执行 null 变量 -
<?php
$var = NULL;
var_dump( (int) $var);
var_dump((float)$var);
var_dump((bool) $var) ;
var_dump( (boolean) $var);
?>
它将产生以下输出 -
float(0)
bool(false)
bool(false)