首頁 >php教程 >php手册 >php中empty,is_null,isset的区别详解

php中empty,is_null,isset的区别详解

WBOY
WBOY原創
2016-06-13 09:36:451028瀏覽

PHP中有很多功能类似的函数,却有着细微的差别,正如本篇文章所有分析的 is_null,empty,isset 三个函数,不费一番功夫,还真不容易真正的搞懂额!下面跟随站长来具体的了解一下这三个函数的区别吧!

我们先来看看这3个函数的功能描述

isset 判断变量是否已存在,如果变量存在则返回 TRUE,否则返回 FALSE。

empty 判断变量是否为空,如果变量是非空 或非零 的值,则 empty() 返回 FALSE。换句话说,"" 、0 、"0" 、NULL 、FALSE 、array() 、var $var; 以及没有任何属性的对象 都将被认为是空的,如果变量为空,则返回 TRUE。

is_null 判断变量是否为NULL

怎么样,一般的都是这种解释,但这种解释已经很让人迷糊了,下面结合具体的例子来分析吧!

从中我们可以发现只要变量是""或者0,或者是false和null,只要是这些值empty都会返回true。

isset只是判断变量是否存在,只要你这个变量不是null或未赋值,返回结果都是true。若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。同时要注意的是一个 NULL 字节("\0")并不等同于 PHP 的 NULL 常数。

而is_null正好是isset的反结果,我们可以把它看成是!isset,是isset的一个逆操作。

从以上的例子中,我们也可以得出下面这几个结论(以后编程中会经常用到的哦):

假设 $var 是任何type

当 empty($var) 为 true 时,(bool)($var) 为 false 。反之亦然。

当 is_null($var) 为 true 时,isset($var) 为 false 。反之亦然。

例如:

$i=$j+1;

这里的is_null($j)为true(可以理解为因为 isset($j)为false,因为没有事先声明 $j 这个变量)

另外需要注意的两点是

(1)empty() 只检测变量,检测任何非变量的东西都将导致解析错误 。换句话说,后边的语句将不会起作用: empty(addslashes($name))。

(2)isset() 只能用于变量,因为传递任何其它参数都将造成解析错误。若想检测常量是否已设置,可使用 defined() 函数。

您可能感兴趣的文章

  • PHP中跳出多重循环使用break,continue,goto,return,exit的用法和区别
  • mysql中tinyint、smallint、int和bigint类型的用法区别
  • php中echo,print,print_r,var_export,var_dump 的用法与区别
  • ThinkPHP中execute和query方法的区别
  • readonly、disabled、display、visible的区别
  • javascript中scrollHeight,scrollWidth,scrollLeft,scrolltop等区别小解
  • PHP合并数组+与array_merge的区别
  • php中$this、static、final、const、self 等几个关键字的用法
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn