发布于2026-07-11 阅读(0)
扫一扫,手机访问
先说说 PHP 里那些跟变量打交道的基础函数,几乎每个项目都能碰到。这类函数用好了,代码能省不少心,用错了反而容易踩坑。下面这些,都是日常开发里绕不开的“老朋友”。
doubleval 其实就是 floatval 的别名,没区别,随你用哪个。
empty 这个函数看起来简单,但坑不少。它判断一个变量是否为空——如果变量不存在,或者值等于 false,就算空。关键是,它不会因为变量未定义而报错,挺适合做安全检查。哪些值被认为是空?空字符串 ""、整数 0、浮点 0.0、字符串 "0"、null、false、空数组、以及声明了但没赋值的变量。所以 empty() 本质上等价于 !isset($var) || $var == false。
floatval 用来获取变量的浮点值,参数只能是标量类型(整数、浮点、字符串、布尔),不能传数组或对象。
get_defined_vars 返回一个多维数组,里面是所有已定义变量的列表——包括环境变量、服务器变量,还有你自己定义的。调试的时候偶尔会用,但生产环境不推荐频繁调用。
get_resource_type 返回资源(resource)的类型字符串。比如数据库连接、文件句柄,传进去会返回 "mysql link" 或 "file" 这类信息。注意如果参数不是合法资源,会报错。
gettype 返回变量的类型字符串。但官方手册里特别提醒:别用 gettype() 来做类型判断,因为返回的字符串在未来版本里可能变,而且字符串比较的效率也不高。推荐用 is_array()、is_bool()、is_float()……那一系列 is_ 函数。
intval 获取整数值,可以指定进制(默认十进制)。注意一点:只有 var 是字符串的时候,进制参数才生效。比如 intval(42, 8) 返回 42(因为 42 数字不受进制影响),而 intval('42', 8) 会返回 34(把八进制的 '42' 转成十进制)。
接下来是一组 is_ 系列检测函数:
is_array、is_bool、is_callable(检测是否为合法可调用结构)、is_countable(验证变量内容是否可数)、is_double(is_float 别名)、is_float、is_int、is_integer(is_int 别名)、is_iterable、is_long(is_int 别名)、is_null、is_numeric(检测数字或数字字符串,比如表单提交的 "123" 也算数字)、is_object、is_real(is_float 别名)、is_resource、is_scalar(检测标量:整数、浮点、字符串、布尔,数组和对象不算)、is_string。
isset 这个函数说简单也简单,说复杂有很多细节。它用来检测变量是否已设置且非 null。如果变量用 unset() 释放过,isset 返回 false。如果把变量设置为 null,isset 也会返回 false。另外注意:null 字符 "\0" 和 PHP 的 NULL 常量是两码事。如果一次传多个参数,必须所有参数都设置了才返回 true,而且计算是从左到右,遇到没设置的立即停止。
print_r 以人类可读的格式打印变量。很多新手不知道它还有第二个参数:$return。如果设为 true,就不会直接输出,而是把内容作为字符串返回。这一点跟 var_export 一样。
serialize 生成一个可存储的变量表示,返回字符串。适合在不同 PHP 进程之间传递数据,保留类型和结构。但只建议在 PHP 环境内部使用,别混到其他语言里。
settype 设置变量的类型。
strval 获取变量的字符串值,同样只能处理标量,不能用于数组或对象。
unserialize 是 serialize 的逆操作,从字符串创建 PHP 值。如果字符串无法反序列化,就返回 false。
unset 释放变量。但它在函数内部的行为值得留意:如果在函数里 unset 一个全局变量(用 global 引入的),实际上只销毁了局部变量,外部全局变量不受影响。要想在函数里真正销毁全局变量,得用 unset($GLOBALS['bar'])。同样,通过引用传递的变量,unset 也只影响局部,外部原变量不变。静态变量呢?在函数内 unset 后,静态变量被销毁,但再次调用函数时,它会恢复成上次销毁前的值。看代码:
function foo()
{
static $bar;
$bar++;
echo "Before unset: $bar, ";
unset($bar);
$bar = 23;
echo "after unset: $bar\n";
}
foo(); // Before unset: 1, after unset: 23
foo(); // Before unset: 2, after unset: 23
foo(); // Before unset: 3, after unset: 23
所以想 unset 一个全局或外部变量,在局部里是做不到彻底清除的,得用 $GLOBALS 或者传引用后在外面 unset。
var_dump 打印变量的详细信息(类型、值、长度等),支持一次传多个变量。
var_export 跟 var_dump 类似,但返回值是合法的 PHP 代码,可以直接拿去用。常用来把数组配置导出成 PHP 文件。同样,第二个参数设为 true 时,不输出而是返回字符串。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8