php--isset()、is_null() 、empty()
开发中经常会遇到验证某个参数是否是null或者是否为空。
一、isset()、is_null() 、empty() :
isset():检测变量是否设置,并且不是 NULL.如果变量没有赋值 或者 变量赋值为null.为 false.
is_null():检测变量是否为 NULL,变量未声明,提示错误,结果输出。
empty() :判断一个变量是否被认为是空的。当一个变量并不存在,或者它的值等同于FALSE
,那么它会被认为不存在。如果变量不存在的话,empty()并不会产生警告。
$def1; $def2=0; $def3=false; $def4=''; $def5=array(); $def6=null; echo('-- isset() --'); echo("<br/>"); echo('$def1'); var_dump(isset($def1) ); echo("<br/>"); echo('$def2=0 :'); var_dump(isset($def2) ); echo("<br/>"); echo('$def3=false :'); var_dump(isset($def3) ); echo("<br/>"); echo('$def4=\'\' :'); var_dump(isset($def4) ); echo("<br/>"); echo('$def5=array() :'); var_dump(isset($def5) ); echo("<br/>"); echo('$def5=null :'); var_dump(isset($def6) ); echo("<hr/>"); echo('-- is_null() --'); echo("<br/>"); echo('$def1'); var_dump(is_null($def1) ); echo("<br/>"); echo('$def2=0 :'); var_dump(is_null($def2) ); echo("<br/>"); echo('$def3=false :'); var_dump(is_null($def3) ); echo("<br/>"); echo('$def4=\'\' :'); var_dump(is_null($def4) ); echo("<br/>"); echo('$def5=array() :'); var_dump(is_null($def5) ); echo("<br/>"); echo('$def5=null :'); var_dump(is_null($def6) ); echo("<hr/>"); echo('-- empty() --'); echo("<br/>"); echo('$def1'); var_dump(empty($def1) ); echo("<br/>"); echo('$def2=0 :'); var_dump(empty($def2) ); echo("<br/>"); echo('$def3=false :'); var_dump(empty($def3) ); echo("<br/>"); echo('$def4=\'\' :'); var_dump(empty($def4) ); echo("<br/>"); echo('$def5=array() :'); var_dump(empty($def5) ); echo("<br/>"); echo('$def5=null :'); var_dump(empty($def6) ); echo("<hr/>");
常用类型默认值,分三段,isset(),is_null(),empty(),是怎样对待默认值的
输出:
-- isset() -- $def1bool(false) $def2=0 :bool(true) $def3=false :bool(true) $def4='' :bool(true) $def5=array() :bool(true) $def5=null :bool(false) -- is_null() -- $def1 Notice: Undefined variable: def1 in C:\Users\Sunn\Desktop\yii\yii\apps\blog\index.php on line 35 Call Stack: 0.0037 135992 1. {main}() C:\Users\Sunn\Desktop\yii\yii\apps\blog\index.php:0 bool(true) $def2=0 :bool(false) $def3=false :bool(false) $def4='' :bool(false) $def5=array() :bool(false) $def5=null :bool(true) -- empty() -- $def1bool(true) $def2=0 :bool(true) $def3=false :bool(true) $def4='' :bool(true) $def5=array() :bool(true) $def5=null :bool(true)
isset():变量是否设置了有效值(变量存在且不为NULL)
is_null:变量是否为NULL(变量未声明也算,会有错误提示)
empty():这个不太友好,标准类型的默认值,被认为空。
总结:isset() is_null() empty() — isset()包容性比较高,其次是is_null,我会根据实际情况严格程度进行使用。
二、defined:检查某个名称的常量是否存在,这个函数是检测常量的。
1 define("NAME","sc"); 2 echo('-- Const: NAME --'); 3 echo("<br/>"); 4 echo("NAME :"); 5 var_dump(defined('NAME')); 6 var_dump(NAME);
输出:
-- Const: NAME -- NAME :bool(true) string(2) "sc" is_null : bool(false)
更多精彩原创心得,请关注微信公众号: 梯形

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?