isset和empty以及is_null区别

注:根据时长用到的,本篇着重isset和empty。

1、当变量未定义时,is_null()和“参数本身”是不允许作为参数判断的,会报Notice警告错误;

2、empty,isset首先都会检查变量是否存在,然后对变量值进行检测。而is_null 和 “参数本身”只是直接检查变量值,是否为null,因此如果变量未定义就会出现错误!

3、isset():仅当null和未定义,返回false

4、empty():""、0、"0"、NULL、FALSE、array(),未定义,均返回false

5、is_null():仅判断是否为null,未定义 报警告;

6、变量本身作为参数,与empty()一致,但接受未定义变量时,报警告;

示列:

<?php
// 预定义变量数组:空字符,字符0,数组0,null,布尔false,空数组
$arrVars = array('', '0', 0, null, false, array());
 
foreach ($arrVars as $value)
{
    echo '<br>传入值为:' . $value . '<br>';
    if (!isset($value))
    {
        echo 'isset()==false<br>';
    }
 
    if (empty($value))
    {
        echo 'empty()==true<br>';
    }
 
    if (!$value)
    {
        echo 'self==false<br>';
    }
 
    if (is_null($value))
    {
        echo 'is_null()==true<br>';
    }
}

结果:

传入值为:
empty()==true
self==false
 
传入值为:0
empty()==true
self==false
 
传入值为:0
empty()==true
self==false
 
传入值为:
isset()==false
empty()==true
self==false
is_null()==true
 
传入值为:
empty()==true
self==false
 
传入值为:Array
empty()==true
self==false

说明(结论)

1:""、0、"0"、NULL、FALSE、array()这几个中,empty()和“变量本身作为参数”结果一致,均作为“空”来处理,而isset()和is_null ()仅当是null时,才作为“空”来处理(值得注意的是false并不会被认为是空)。

2:empty,isset输入参数必须是一个变量(PHP变量是以$字符开头的),而is_null输入参数只要是能够有返回值就可以(常量,变量,表达式等)。在PHP手册里面,对于他们解析是:empty,isset 是一个语言结构而非函数,因此它无法被变量函数调用。

总体区别:

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 【未定义变量传入后会出错!】。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章