首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >php中函数 isset(), empty(), is_null() 的区别[通俗易懂]

php中函数 isset(), empty(), is_null() 的区别[通俗易懂]

作者头像
全栈程序员站长
发布2022-07-11 11:18:07
发布2022-07-11 11:18:07
1.9K0
举报

大家好,又见面了,我是全栈君。

NULL: 当你在你的脚本中写下这样一行代码

代码语言:javascript
复制
$myvariable; //此处你想定义一个变量,但未赋值。会有Notice: Undefined variable
echo $myvariable + 3; //使用这个变量出现:Notice: Undefined variable: myvariable in

如果将其改写成:

代码语言:javascript
复制
$myvariable = NULL; 
echo $myvariable + 3; //这样就不会有问题了

所以得出在你的脚本在使用一个变量时最好赋一个默认值,如果你不想,就可以将NULL赋给变量,表示这个变量已经定义但没有值,属于NULL类型。

is_null(): bool is_null ( mixed $var ) (php.net官方文档的函数定义) 当参数满足下面三种情况时,is_null()将返回TRUE,其它的情况就是FALSE 1、它被赋值为NULL 2、它还没有赋值 3、它未定义,相当于unset(),将一个变量unset()后,不就是没有定义吗 让我们来看一些例子:

代码语言:javascript
复制
$myvar = NULL; 
var_dump(is_null($myvar)); // TRUE
$myvar1; 
var_dump(is_null($myvar1)); // TRUE Notice: Undefined variable
$num = 520;
unset($num);
var_dump(is_null($num)); //TRUE Notice: Undefined variable
var_dump(is_null($some_undefined_var)); //TRUE Notice: Undefined variable

$myvar = 0; is_null($myvar); // FALSE
$myvar = FALSE; is_null($myvar); // FALSE
$myvar = ''; is_null($myvar); // FALSE

isset():bool isset ( mixed var [, mixed … ] ),参数是一个变量检测参数已设定,并且不是NULL。如果没有设置变量,变量未赋值,或变量被设为NULL,isset()函数就返回NULL。正好和is_null()函数相反,is_null()为TRUE的情况在isset()中就为FALSE。有意思!如果传递多个参数,将取交集。即所有参数全部符合 isset() 时才返回 TRUE。似乎让人感觉有点困惑,来看一些例子:

代码语言:javascript
复制
$myvar = NULL; isset($myvar); // FALSE 当一个变量被赋值为NULL时,就表示这个变量没有值
$myvar = 0; isset($myvar); // TRUE
$myvar = FALSE; isset($myvar); // TRUE
$myvar = ''; isset($myvar); // TRUE
isset($some_undefined_var); // FALSE Undefined variable

可以看出isset()着重检测一个 变量是否设置和这个变量是否有具体的值,当变量满足这两种情况时isset()返回TRUE

代码语言:javascript
复制
defined():
bool defined ( string $name )

检测是否设置常量

代码语言:javascript
复制
empty():
bool empty ( mixed $var )

判读变量是否为空。 请见上面的类型比较表empty()那一列你就明白哪些情况是空的情形了。还有其他一些函数的参照。 来看一些例子:

代码语言:javascript
复制
$myvar = NULL; empty($myvar); // TRUE
$myvar = 0; empty($myvar); // TRUE
$myvar = FALSE; empty($myvar); // TRUE
$myvar = ''; empty($myvar); // TRUE
empty($some_undefined_var); // TRUE

empty()为TRUE的情况,若变量不存在,或者变量存在且其值为””、0、”0″、NULL、FALSE、array()、var var; 以及没有任何属性的对象,则返回 TURE。一般如!empty()的判断,就是变量存在,且值不为””、0、”0″、NULL、FALSE、array()以及只是单纯定义一个变量var。

原文:https://blog.csdn.net/jiaobuchong/article/details/41807011

补充:

代码语言:javascript
复制
if (isset($_GET['reply_id'] && $_GET['reply_user'])) {
代码语言:javascript
复制
报错:Fatal error: Cannot use isset() on the result of an expression (you can use "null !== expression" instead) in line 42
改为这样:
代码语言:javascript
复制
 if ( isset($_GET['reply_id'], $_GET['reply_user']) ) {
      // code here
 }

a,b都为true时,才为TRUE;

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/112171.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年2月9,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档