WEB类

php中函数 isset(), empty(), is_null() 的区别

2018-01-19 18:14:23

先来看看php的 PHP type comparison tables:

可参考http://php.net/manual/en/types.comparisons.php


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

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

如果将其改写成:


$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()后,不就是没有定义吗
让我们来看一些例子:

$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。
似乎让人感觉有点困惑,来看一些例子:

$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

defined():

bool defined ( string $name )
检测是否设置常量

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



统计:
0 评论
197 查看


马上批阅

评论该篇文章

Laravel技术交流群
扫码关注体验小程序
小程序二维码 小程序码
站长最新说说动态

欢迎来到追梦小窝,有什么值得收藏的就拿去用吧,不客气,大部分内容来自互联网,如有侵犯版权请您注明来信,我将会第一时间妥善处理


最新评论
共6条评论
image
2017-07-07 14:04:55 追梦小窝 评论了 今天画了一个小图标
来自:59.40.248.60
@皮皮豪:我QQ543619552
image
2017-07-07 14:04:27 追梦小窝 评论了 emlog缩略图不同实现方法:正文-附件-随机图片
来自:59.40.248.60
@皮皮豪:那里不会,教程说的很详细
image
2017-07-07 12:06:08 皮皮豪 评论了 emlog缩略图不同实现方法:正文-附件-随机图片
来自:120.82.74.53
看了还是不会啊
image
2017-07-07 18:23:25 皮皮豪 评论了 今天画了一个小图标
来自:120.82.74.36
怎么联系你啊
image
2017-07-07 12:07:49 追梦小窝 评论了 今天画了一个小图标
来自:113.91.34.248
@文森:别笑话我了
image
2017-04-04 22:29:04 文森 评论了 今天画了一个小图标
来自:223.74.150.13
这个图标看上去很nice
站点统计
  • 文章总数: 140篇
  • 微语总数: 6条
  • 评论总数: 6条
  • 运行天数: 1634天