第一章:欢迎来到PHP的“里世界”
伙计们,敲了这么久PHP代码,你是不是觉得数据类型就那么老几样?整数浮点字符串,数组对象布尔值,像超市货架上的可乐——整齐但无聊。今天咱们要撬开后台仓库的门,看看PHP私藏的两个“骚东西”:NULL类型和资源类型。
这俩货好比班级里的两个神秘同学:一个永远趴在桌上睡觉(NULL),老师点名时总回答“到不了”;另一个整天拿着不知道哪搞来的实验室钥匙(资源类型),神出鬼没。你平时可能没注意它们,但哪天它们闹起脾气,你的程序分分钟崩得亲妈都不认识。
先剧透个真实惨案:上周我隔壁工位的老王,就因为没处理好NULL,让公司订单系统凌晨两点给用户发了0元账单;前个月实习生小李用fopen()开了文件忘关闭,直接把服务器硬盘塞成了砖头。所以啊,今天这堂课,保命价值大于装逼价值。
第二章:NULL——变量界的“薛定谔的猫”
2.1 NULL的诞生:从虚无中来
NULL在PHP里是个奇葩的存在。它不是0(0是个正经数字),不是空字符串(空字符串好歹是个字符串),也不是false(false至少是个布尔值)。它就是nothing,是变量世界的真空状态。
// 实验室来了三只猫,只有一只是“薛定谔的猫”
$cat1 = 0; // 这只是0猫
$cat2 = ''; // 这只是空猫
$cat3 = null; // 这只是薛定谔的猫——你也不知道它是不是存在
var_dump($cat1); // int(0)
var_dump($cat2); // string(0) ""
var_dump($cat3); // NULL
看见没?PHP用大写NULL告诉你:这位爷跟那些妖艳贱货不一样。它连自己的数据类型都叫“NULL类型”。
2.2 NULL的三种存在形式
NULL一般以三种形态潜入你的代码:
形态一:主动赋值为NULL
$wallet = null; // 我的钱包,空的,很干净
echo "钱包里有:" . $wallet; // 输出个寂寞
形态二:变量被unset()后
$girlfriend = "小美";
unset($girlfriend); // 分手了
var_dump($girlfriend); // Notice: Undefined variable + 实际值是NULL
形态三:变量声明但未赋值
$homework; // 声明了作业变量
var_dump($homework); // NULL,作业?什么作业?
2.3 检测NULL的三种“抓鬼”方式
面对这个幽灵变量,PHP给了我们三副“阴阳眼镜”:
方式一:is_null()函数——专业抓鬼队
$ghost = null;
if (is_null($ghost)) {
echo "抓到一只鬼!"; // 输出
}
方式二:=== null 严格比较——自带照妖镜
$something = 0;
if ($something === null) {
echo "这是NULL";
} else {
echo "这不是NULL,它是0"; // 输出这个
}
方式三:isset()的反面——鬼魂探测器
$var = null;
if (!isset($var)) {
echo "这里没有实体变量"; // 输出
}
2.4 NULL的实战骚操作
场景一:数据库查询救场
// 用户没填手机号,数据库里就是NULL
$userPhone = getUserPhoneFromDB($userId);
// 错误示范(会导致短信接口报错):
// sendSMS($userPhone, "验证码:1234");
// 正确操作:
if (!is_null($userPhone)) {
sendSMS($userPhone, "验证码:1234");
} else {
log("用户{$userId}没留手机号,改发邮件吧");
}
场景二:函数返回值的“安全通道”
function findUser($username) {
$user = queryDB("SELECT * FROM users WHERE name = '$username'");
// 找不到就返回NULL,而不是返回false或空数组
// 这样调用方不会混淆“找到了但没数据”和“根本没找到”
return $user ?: null;
}
$user = f

最低0.47元/天 解锁文章
783

被折叠的 条评论
为什么被折叠?



