php中is_null,empty,isset,unset 的区别详细介绍

2013-10-09  来源:本站原创  分类:php实例  人气:4 

本篇文章介绍了,php中is_null,empty,isset,unset 的区别详细分析。需要的朋友参考下

is_null, empty, isset, unset 我们先来看看这4个函数的描述。

isset 判断变量是否已存在(配置)
unset 把变量删除(释放)掉
empty 判断变量是否为空
is_null 判断变量是否为NULL
ok,已经开始搞人了。那么开始,这4个函数中除了unset,其他3个都是判断函数,unset首先出局,因为他不会搞错,其次是is_null,我们可以把它看成是!isset,是isset的一个逆操作,下面一张表可以很清楚的说明他们之间的关系:

变量                          empty          is_null          isset
 $a=””                       true               false              true
 $a=null                     true               true              false
 var $a                      true              true               false
 $a=array()               true               false              true
 $a=false                   true               false              true
 $a=15                      false              false               true
 $a=1                        false              false               true
 $a=0                        true               false               true
 $a=”0”                     true               false                true
 $a=”true”                false               false              true
 $a=”false”               false               false               true

从中我们可以发现只要变量是否为” “或者0,或者是false和null,只要是这些值empty都会返回true,而isset是判断变量是否存在,只要你这个变量不是null或未赋值,返回结果都是true,而is_null正好是isset的反结果。

当然如果只是想做如下工作:
echo !isset($_GET['a']); //如果得不到变量a的值
echo empty($_GET['a']); //如果变量a的值是空

那么结果都是一样的,都可以用。

相关文章
  • php中is_null,empty,isset,unset 的区别详细介绍 2013-10-09

    本篇文章介绍了,php中is_null,empty,isset,unset 的区别详细分析.需要的朋友参考下 is_null, empty, isset, unset 我们先来看看这4个函数的描述. isset 判断变量是否已存在(配置) unset 把变量删除(释放)掉 empty 判断变量是否为空 is_null 判断变量是否为NULL ok,已经开始搞人了.那么开始,这4个函数中除了unset,其他3个都是判断函数,unset首先出局,因为他不会搞错,其次是is_null,我们可以把它看成

  • nodejs中exports与module.exports的区别详细介绍 2013-10-19

    你肯定非常熟悉nodejs模块中的exports对象,你可以用它创建你的模块接下来介绍创建过程,感兴趣的朋友可以参考下 你肯定非常熟悉nodejs模块中的exports对象,你可以用它创建你的模块.例如:(假设这是rocker.js文件) exports.name = function() { console.log('My name is Lemmy Kilmister'); }; 在另一个文件中你这样引用 复制代码 代码如下: var rocker = require('./rocker.j

  • JavaScript中property和attribute的区别详细介绍 2014-09-29

    这篇文章主要介绍了JavaScript中property和attribute的区别详细介绍,本文总结了定义.相同这处.不同之处.浏览器兼容性上的差别等内容,并建议优先选择property,需要的朋友可以参考下 1. 定义 Property:属性,所有的HTML元素都由HTMLElement类型表示,HTMLElement类型直接继承自Element并添加了一些属性,添加的这些属性分别对应于每个HTML元素都有下面的这5个标准特性: id,title,lang,dir,className.DOM节

  • Javascript中的异步编程规范Promises/A详细介绍 2013-11-02

    这篇文章主要介绍了Javascript中的异步编程规范Promises/A详细介绍,同时介绍了jQuery 中的 Deferred 和 Promises,需要的朋友可以参考下 Javascript里异步编程逐渐被大家接受,先前大家一般通过回调嵌套,setTimeout.setInterval等方式实现,代码看起来非常不直观,不看整个代码逻辑很难快速理解.Javascript里异步函数大概有I/O函数(Ajax.postMessage.img load.script load等).计时函数(set

  • Java中static关键字的作用和用法详细介绍 2015-02-14

    这篇文章主要介绍了Java中static关键字的作用和用法详细介绍,本文讲解了static变量.静态方法.static代码块.static和final一块用等内容,需要的朋友可以参考下 static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static修饰的成员变量和成员方法独立于该类的任何对象.也就是说,它不依赖类特定的实例,被类的所有实例共享. 只要这个类被加载,Jav

  • C++中delete和delete[]的区别详细介绍 2013-10-19

    一直对C++中的delete和delete[]的区别不甚了解,今天遇到了,上网查了一下,得出了结论,拿出来和大家分享一下 一直对C++中的delete和delete[]的区别不甚了解,今天遇到了,上网查了一下,得出了结论.做个备份,以免丢失. C++告诉我们在回收用 new 分配的单个对象的内存空间的时候用 delete,回收用 new[] 分配的一组对象的内存空间的时候用 delete[]. 关于 new[] 和 delete[],其中又分为两种情况:(1) 为基本数据类型分配和回收空间:(2

  • Jquery中children与find之间的区别详细解析 2014-09-24

    这篇文章主要是对Jquery中children与find之间的区别进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助 首先看一段HTML代码,如下: <table id="tb"> <tr> <td>0</td> <td>1</td> <td>2</td> </tr> <tr> <td>3</td> <td>4<

  • javascript中的undefined和not defined区别示例介绍 2015-01-23

    这篇文章主要介绍了javascript中的undefined和not defined区别,需要的朋友可以参考下 经研究发现,两者之间有很大的区别,不知从英语讲,这两者都有啥区别,研究结果如下 测试os:ubuntu 测试浏览器:chrome 测试案例1 console.log(a) 报错 ReferenceError: a is not defined 测试案例2 var a console.log(a) 无报错,但是输出undefined 测试案例2 var b = {}; console.l

  • php中\r \r\n \t的区别示例介绍 2015-03-06

    这篇文章主要介绍了php中\r \r\n \t的区别,需要的朋友可以参考下 \n 软回车: 在Windows 中表示换行且回到下一行的最开始位置.相当于Mac OS 里的 \r 的效果. 在Linux.unix 中只表示换行,但不会回到下一行的开始位置. \r 软空格: 在Linux.unix 中表示返回到当行的最开始位置. 在Mac OS 中表示换行且返回到下一行的最开始位置,相当于Windows 里的 \n 的效果. \t 跳格(移至下一列). 它们在双引号或定界符表示的字符串中有效,在单引

  • mysql中int.bigint.smallint 和 tinyint的区别详细介绍 2014-08-04

    最近使用mysql数据库的时候遇到了多种数字的类型,主要有int,bigint,smallint和tinyint;接下来将详细介绍以上三种类型的应用 最近使用mysql数据库的时候遇到了多种数字的类型,主要有int,bigint,smallint和tinyint.其中比较迷惑的是int和smallint的差别.今天就在网上仔细找了找,找到如下内容,留档做个总结: 使用整数数据的精确数字数据类型. bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (92

  • ADO.NET中的五个主要对象的详细介绍与应用 2015-01-17

    ADO.NET中的五个主要对象:Connection.Command.DataAdapter DataSet.DataReader详细介绍与应用,感兴趣的朋友可以参考下 首先看一个例子 配置文件 <configuration> <connectionStrings> <add name=connStr" connectionString="Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\S

  • Mysql中的count()与sum()区别详细介绍 2013-12-31

    本文将介绍Mysql中的count()与sum()区别,需要的朋友可以参考下 首先创建个表说明问题 CREATE TABLE `result` ( `name` varchar(20) default NULL, `subject` varchar(20) default NULL, `score` tinyint(4) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 插入一些数据, 复制代码 代码如下: insert into result

  • Java线程中sleep和wait的区别详细介绍 2014-02-19

    Java中的多线程是一种抢占式的机制,而不是分时机制.抢占式的机制是有多个线程处于可运行状态,但是只有一个线程在运行 Java中的多线程是一种抢占式的机制,而不是分时机制.抢占式的机制是有多个线程处于可运行状态,但是只有一个线程在运行. 共同点: 1. 他们都是在多线程的环境下,都可以在程序的调用处阻塞指定的毫秒数,并返回. 2. wait()和sleep()都可以通过interrupt()方法 打断线程的暂停状态 ,从而使线程立刻抛出InterruptedException. 如果线程A希望立

  • java中静态变量和实例变量的区别详细介绍 2014-12-21

    本篇文章介绍了,java中静态变量和实例变量的区别.需要的朋友参考下 运行效果: 控制台效果: ================================================== 代码部分 ================================================== /hello_test/src/com/b510/test/StaticTest.java /** * */ package com.b510.test; /** * 在程序运行时的区别:实

  • Javascript Boolean.Nnumber.String 强制类型转换的区别详细介绍 2014-05-17

    我们知道 Boolean(value) 是把值转换成Boolean类型,Nnumber(value) 是把值转换成数字(整型或浮点数),而 String(value) 是把值转换成字符串,需要的朋友可以了解下 下面就来详细说一说 Javascript 中 Boolean.Nnumber.String 强制类型转换的区别. 我们知道 Boolean(value) 是把值转换成Boolean类型,Nnumber(value) 是把值转换成数字(整型或浮点数),而 String(value) 是把值转

  • java向多线程中传递参数的三种方法详细介绍 2014-06-03

    但在多线程的异步开发模式下,数据的传递和返回和同步开发模式有很大的区别.由于线程的运行和结束是不可预料的,因此,在传递和返回数据时就无法象函数一样通过函数参数和return语句来返回数据 在传统的同步开发模式下,当我们调用一个函数时,通过这个函数的参数将数据传入,并通过这个函数的返回值来返回最终的计算结果.但在多线程的异步开发模式下,数据的传递和返回和同步开发模式有很大的区别.由于线程的运行和结束是不可预料的,因此,在传递和返回数据时就无法象函数一样通过函数参数和return语句来返回数据.本文

  • java与c#的语法区别详细介绍 2014-04-30

    由C#转入Java一段时间了,总结下个人认为的Java同C#语法之间的不同之处,有不同意见之处还望各位海涵,刚学Java时觉得语法同C#大致是相同的(应该说C#同Java大致相同 由C#转入Java一段时间了,总结下个人认为的Java同C#语法之间的不同之处,有不同意见之处还望各位海涵 刚学Java时觉得语法同C#大致是相同的(应该说C#同Java大致相同,毕竟人家微软的C#是有意模仿Java的语法习惯的) 比尔.盖茨曾经说过:"Java是最卓越的程序设计语言" 言归正传,下面探讨Ja

  • 解析wprintf 中使用%I64d格式化输出LONGLONG的详细介绍 2014-06-05

    本篇文章是对wprintf 中使用%I64d格式化输出LONGLONG进行了详细的分析介绍,需要的朋友参考下 wprintf 中使用%I64d格式化输出LONGLONG 在写某个程序时,因为需要用到一个大的整数,就是要了LONGLONG型: LONGLONG nLarge; 但是格式化时不知道应该用什么字符,用 %d,%l都不行. LONGLONGLONGLONG其实就是int64类型.在winnt.h可以看到: 复制代码 代码如下: typedef __int64 LONGLONG; 所以要想

  • ASP.NET中Web.config文件的层次关系详细介绍 2014-06-19

    Web.config 是一个基于 XML 的配置文件,该文件的作用是对应用程序进行配置,下面为大家介绍下ASP.NET中Web.config文件的层次关系 Web.config 是一个基于 XML 的配置文件,该文件的作用是对应用程序进行配置,比如规定客户的认证方法,基于角色的安全技术的策略,数据绑 定的方法,远程处理对象等. 可以在网站的根目录和子目录下分别建立自己的 Web.config 文件,也可以一个Web.config 文件都不建立,Web.config 并不是网站必备的文件.这是因为

  • javascript中的变量作用域以及变量提升详细介绍 2015-01-15

    在javascript中, 理解变量的作用域以及变量提升是非常有必要的.这个看起来是否很简单,但其实并不是你想的那样,还要一些重要的细节你需要理解 变量作用域"一个变量的作用域表示这个变量存在的上下文.它指定了你可以访问哪些变量以及你是否有权限访问某个变量." 变量作用域分为局部作用域和全局作用域. 局部变量(处于函数级别的作用域) 不像其他对面对象的编程语言(比方说C++,Java等等),javascript没有块级作用域(被花括号包围的):当是,javascript有拥有函数级别的