做php开发时候,想必在使用:empty,isset,is_null 这几个函数时候,遇到一些问题。甚至给自己的程序带来一些安全隐患的bug。很多时候,对于isset,empty都认为差不多。因此开发时候,就没有注意,一段作为流程判断时候,就出现bug问题了.
一、举例说明
A.如何判断一个变量是否定义?
<?php
// 假设不存在$test 变量
$isset = isset($test) ? \"test is define!\" : \"test is undefine!\";
echo \"isset:$isset\", \'<br />\';
// 作者: www.manongjc.com
$empty = !empty($test) ? \"test is define!\" : \"test is undefine!\";
echo \"empty:$empty\", \'<br />\';
$is_null = is_null($test) ? \"test is define!\" : \"test is undefine!\";
echo \"is_null:$is_null\";
测试结果是:
isset:test is undefine!
empty:test is undefine!
is_null:test is define!
结果表明: empty,isset首先都会检查变量是否存在,然后对变量值进行检测。而is_null 只是直接检查变量值,是否为null,因此如果变量未定义就会出现错误!
B、看下各自接收的参数是什么?
1、isset函数参数:
<?php
$test=100;
echo isset($test),isset(100),$isset($b=100);
输出:
<br />
<b>Parse error</b>: parse error, unexpected T_LNUMBER, expecting T_STRING or T_VARIABLE or \'$\' in <b>PHPDocument3</b> on line <b>3</b><br />
2、empty函数参数:
<?php
$test=100;
echo empty($test),empty(100),empty($b=100);
输出:
<br />
<b>Parse error</b>: parse error, unexpected T_LNUMBER, expecting T_STRING or T_VARIABLE or \'$\' in <b>PHPDocument3</b> on line <b>3</b><br />
3、is_null函数参数:
<?php
$test=100;
echo is_null($test),is_null(100),is_null($b=100);
运行结果:没有任何错误。
结果表明: empty,isset输入参数必须是一个变量(PHP变量是以$字符开头的),而is_null输入参数只要是能够有返回值就可以(常量,变量,表达式等)。在PHP手册里面,对于他们解析是:empty,isset 是一个语言结构而非函数,因此它无法被变量函数调用。
二、概括总结isset,empty,is_null区别:
empty()
如果 变量 是非空或非零的值,则 empty() 返回 FALSE。换句话说,""、0、"0"、NULL、FALSE、array()、var $var、未定义,以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE。
isset()
如果 变量 存在且值非NULL,则返回 TRUE,否则返回 FALSE(包括未定义)。变量值设置为:null,返回也是false;unset一个变量后,变量被取消了。注意,isset对于NULL值变量,特殊处理。
is_null()
检测传入值【值,变量,表达式】是否是null,只有一个变量定义了,且它的值是 null ,它才返回TRUE . 其它都返回 FALSE 【未定义变量传入后会出错!】。
继续阅读与本文标签相同的文章
5G 手机盘点:想要尝鲜的朋友看过来
A 站 UP 主到快手拍短视频,这件事行得通吗?
-
中国客车“抢眼”世界客车博览会
2026-05-14栏目: 教程
-
充分利用系统磁盘空间,Windows 7操作系统如何创建压缩文件夹
2026-05-14栏目: 教程
-
iPhone11系列性能测试:碾压华为麒麟990,性能超越它两倍!
2026-05-14栏目: 教程
-
手机导航是怎样判断路况的?不仅是通过卫星,这几个原因使导航更智能
2026-05-14栏目: 教程
-
手机信号突然从“4G”变成“E”,是什么意思?客服给出答案
2026-05-14栏目: 教程
