PHP get_debug_type() 函数返回变量的解析名称。此函数将把对象解析为它们的类名,将资源解析为它们的资源类型名称,并将标量值解析为它们在类型声明中使用的通用名称。
此函数不同于 gettype() 因为它返回与实际使用更一致的类型名称,而不是由于历史原因而出现的类型名称。
注意:此函数自 PHP 8.0.0 起可用。
语法
get_debug_type(variable)
参数
variable | 必填。 指定要检查的变量。 |
返回值
返回变量的解析名称。返回字符串的可能值为:
类型 + 状态 | 返回值 | 注释 |
---|---|---|
null | "null" | |
布尔值(true 或 false) | "bool" | |
整数 | "int" | |
浮点数 | "float" | |
字符串 | "string" | |
数组 | "array" | |
资源 | "resource (resourcename)" | |
资源(已关闭) | "resource (closed)" | 示例:使用 fclose 关闭后的文件流。 |
命名类中的对象 | 类的全名,包括其命名空间,例如Foo\Bar | |
来自匿名类的对象 | "class@anonymous" | 匿名类是通过 $x = new class { ... } 语法创建的 |
示例:get_debug_type() 示例
下面的示例显示 get_debug_type() 函数的用法。
<?php
echo "get_debug_type(10): ".get_debug_type(10)."\n";
echo "get_debug_type(10.5): ".get_debug_type(10.5)."\n";
echo "get_debug_type(1e5): ".get_debug_type(1e5)."\n";
echo "get_debug_type('10.5'): ".get_debug_type('10.5')."\n";
echo "get_debug_type('xyz'): ".get_debug_type('xyz')."\n";
echo "get_debug_type(false): ".get_debug_type(false)."\n";
echo "get_debug_type(null): ".get_debug_type(null)."\n";
echo "get_debug_type(array()): ".get_debug_type(array())."\n";
echo "get_debug_type([]): ".get_debug_type([])."\n";
?>
上述代码的输出将是:
get_debug_type(10): int
get_debug_type(10.5): float
get_debug_type(1e5): float
get_debug_type('10.5'): string
get_debug_type('xyz'): string
get_debug_type(false): bool
get_debug_type(null): null
get_debug_type(array()): array
get_debug_type([]): array
示例:与对象和资源变量一起使用
考虑下面的示例,其中函数与对象和资源变量一起使用。假设当前工作目录中有一个名为 test.txt 的文件。
<?php
$file = fopen("test.txt","r");
echo get_debug_type($file)."\n";
fclose($file);
echo get_debug_type($file)."\n";
$iter = new ArrayIterator();
echo get_debug_type($iter)."\n";
echo get_debug_type(new stdClass)."\n";
echo get_debug_type(new class {})."\n";
?>
上述代码的输出将是:
resource (stream)
resource (closed)
ArrayIterator
stdClass
class@anonymous