除了当变量没有置值时不产生警告之外,empty() 是 (boolean) var 的反义词。

PHP中有很多函数功能类似,却有着细微的差别...
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的反结果。

从这个图中,可以很清楚的看到一种联系:
假设 $var 是任何type。
当 empty($var) 为 true 时, (bool)($var) 为 false 。反之亦然。
同样,
当 is_null($var) 为 true 时, isset($var) 为 false 。反之亦然。
假如:
$i=$j+1;
这里的is_null($j)为true

可见:
isset用于判断未定义的情况。
Empty可以判断未定义和已定义,但是为空,为0的情况。
Is_null可以看做是isset的反函数
If($表达式)可以看做是empty的反函数
当要判断的内容为数组时,表中仅仅罗列了一种情况,下面补充两种容易误会的情况
PHP代码

$b[]=null;         
$b[]=null;               
//视为数组已存在且不为空   
   
$c[]="";   
$c[]="";   
//视为数组已存在且不为空

empty
(PHP 3, PHP 4, PHP 5)
empty -- 检查一个变量是否为空
描述
bool empty ( mixed var )

如果 var 是非空 或非零 的值,则 empty() 返回 FALSE。换句话说,"" 、0 、"0" 、NULL 、FALSE、array() 、var $var ; 以及没有任何属性的对象 都将被认为是空的,如果 var 为空,则返回 TRUE。
除了当变量没有置值时不产生警告之外,empty() 是 (boolean) var的反义词。参见转换为布尔值获取更多信息。
empty() 与 isset() 的一个简单比较。

[code]
<?php
$var = 0;
// 结果为 true,因为 $var 为空
if (empty($var)) {
      echo '$varis either 0 or not set at all';
}
// 结果为 false,因为 $var 已设置
if (!isset($var)) {
      echo '$varis not set at all';
}
?>
[/code]

注: 由于这是一个语言结构而非函数,因此它无法被变量函数调用。
注: empty() 只检测变量,检测任何非变量的东西都将导致解析错误 。换句话说,后边的语句将不会起作用:empty(addslashes($name))。
isset
(PHP 3, PHP 4, PHP 5)
isset -- 检测变量是否设置
描述
bool isset ( mixed var [, mixed var [, ...]] )

如果 var 存在则返回 TRUE,否则返回 FALSE。
如果已经使用 unset() 释放了一个变量之后,它将不再是 isset()。若使用 isset() 测试一个被设置成 NULL的变量,将返回 FALSE。同时要注意的是一个 NULL 字节("\0")并不等同于 PHP 的 NULL 常数。
警告: isset() 只能用于变量,因为传递任何其它参数都将造成解析错误。若想检测常量是否已设置,可使用 defined()函数。
is_null
(PHP 4 >= 4.0.4, PHP 5)
is_null -- 检测变量是否为 NULL
描述
bool is_null ( mixed var )

如果 var 是 null 则返回 TRUE,否则返回 FALSE。
查看 NULL 类型获知变量什么时候被认为是 NULL,而什么时候不是。

php empty 和空字符串区别相关推荐

  1. null与空字符串区别

    null与空字符串主要区别如下: 1,null不指向任何对象,相当于没有任何值:而""代表一个长度为0的字符串 2,null不分配内存空间:而""会分配内存空间 ...

  2. oracle数据库null和空字符串区别,null和空字符串('')的区别

    在Java开发中,我们需要常常判断是否值为null,尤其在xml数据交互过程中,我们判断某一个报文的值是否为null时候,经常需要用三目运算判断:如果值为null,则赋值空字符串(insert数据库时 ...

  3. mysql null 和 空字符串 区别

    区别 1.在进行count()统计某列的记录数的时候,如果采用的NULL值,系统会自动忽略掉,但是空值是会进行统计到其中的. 2.判断NULL 用IS NULL 或者 IS NOT NULL, SQL ...

  4. 空字符串、NULL、空格串的区别

    1.表示区别 string str1 = "";    //空字符串      str1.length() 等于 0 string str2 = null; //NULL stri ...

  5. oracle和mysql空字符串_Oracle数据库中对null值的排序及mull与空字符串的区别

    order by排序之null值处理方法在对业务数据排序时候,发现有些字段的记录是null值,这时排序便出现了有违我们使用习惯的数据大小顺序问题.在Oracle中规定,在Order by排序时缺省认为 ...

  6. c语言中null和空格的区别,空字符串(“”)和null和空格字符串( )的区别

    null表示的是一个对象的值,而并不是一个字符串. 例如声明一个对象的引用,String a = null ; ""表示的是一个空字符串,也就是说它的长度为0,但它是一个字符串. ...

  7. Oracle中Null与空字符串' '的区别

    含义解释: 问:什么是NULL? 答:在我们不知道具体有什么数据的时候,也即未知,可以用NULL,我们称它为空,ORACLE中,含有空值的表列长度为零. ORACLE允许任何一种数据类型的字段为空,除 ...

  8. Oracle中Null与空字符串''的区别

    http://read.newbooks.com.cn/info/172049.html Oracle中Null与空字符串''的区别 来源:CSDN   作者:jsjzzh   发布时间:2007-1 ...

  9. Django与SQL语言中——NULL与空字符串的区别

    SQL有指定空值的独特方式,它把空值叫做NULL. Null在数据库中表示 不知道的数据,主要有3种意思: 1)知道数据存在,但不知道具体值. 2)不知道数据是否存在. 3)数据不存在. 在SQL中, ...

最新文章

  1. 美国的电子垃圾都去了哪?
  2. MySQL show processlist说明
  3. wordpress使用的插件记录
  4. CXF客户端配置请求超时限制-SocketTimeoutException(Spring配置文件中配置和通过代码进行配置)
  5. 智能机浏览器版本信息获取
  6. 485通讯线是几芯的_小令老师说门禁| 为什么485门禁必然会取代韦根?
  7. 越努力越幸运--动态数组vector
  8. 你知道高并发的性能测试怎么做吗?
  9. Windows10使用Anaconda安装TensorFlow-GPU
  10. 转:Web页面通过URL地址传递参数常见问题及检测方法
  11. 模板建网站-开源工具
  12. 8、ns-3可视化工具
  13. android 模拟器装apk,如何在Android模拟器中安装apk文件
  14. GSAP教程之Tween详解
  15. Photoshop从入门到放弃
  16. Gitlab Runner
  17. 数值分析18 - 通过直接方法得到函数积分近似 数值方法(左、右、中、梯形矩形积分公式、Simpson积分公式)
  18. C语言代码质量与架构调整(三)
  19. Ubuntu 设置多用户smba共享服务
  20. opendns_如何使用OpenDNS或Google DNS设置Verizon FIOS路由器

热门文章

  1. 2026年物联网将为运营商带来高收入
  2. VSCode中snippets(代码模板)的使用
  3. DirectX11--实现一个3D魔方(3)
  4. Android逆向入门6——定位到小红书Sign算法
  5. 为VMware vSphere创建Ubuntu 18.04 Terraform模板
  6. python从属关系编号_笨办法学Python 习题 42: 对象、类、以及从属关系
  7. 技术研发方面工作经验总结
  8. 新闻推荐系统:深度知识感知网络DKN
  9. 二维码名片的格式 - vcard
  10. 【JZOJ3794】【洛谷P1383】高级打字机【主席树】