`
haohao-xuexi02
  • 浏览: 213630 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

empty,is_null,isset的区别

    博客分类:
  • php
阅读更多

http://happmaoo.iteye.com/blog/884364

 

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代码

 

  1. $b[]=null;
  2. $b[]=null;
  3. //视为数组已存在且不为空
  4. $c[]="";
  5. $c[]="";
  6. //视为数组已存在且不为空

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() 的一个简单比较。

<?php
$var = 0;

// 结果为 true,因为 $var 为空
if (empty($var)) {
echo '$var is either 0 or not set at all';
}

// 结果为 false,因为 $var 已设置
if (!isset($var)) {
echo '$var is not set at all';
}
?>

注: 由于这是一个语言结构而非函数,因此它无法被变量函数调用。

注: 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,而什么时候不是。


函数 htmlspecialchars() 和 htmlentities() 的解释都是:
把一些预定义的字符转换为 HTML 实体。

预定义的字符是:& (和号) " (双引号) ' (单引号) < (小于) > (大于)

语法:
htmlspecialchars ( string, quotestyle, character-set )
htmlentities( string, quotestyle, character-set )

string 必需。规定要转换的字符串。
quotestyle 可选。规定如何编码单引号和双引号。
character-set 可选。字符串值,规定要使用的字符集。

那么两者差别是:
如果字符串中有中文,htmlentities 会将中文转换成乱码,需要设置 character-set 为 GB2312 才行!而 htmlspecialchars 无需设置,直接转换。

所以还是建议使用 htmlspecialchars ,把 htmlentities 遗忘吧。

分享到:
评论

相关推荐

    解析PHP中empty is_null和isset的测试

    PHP提供了几种不同的语言结构来帮助开发者进行这样的检查,分别是empty()、is_null()和isset()。这些函数虽然都是用来检测变量的状态,但是它们的使用场景和判断条件各有不同。下面将详细介绍这三个函数的具体用途和...

    PHP中empty,isset,is_null用法和区别

    在PHP编程中,正确理解和使用`empty`, `isset`, 和 `is_null`这三个函数至关重要,因为它们直接影响到代码的逻辑判断和错误处理。下面将详细解释这三个函数的用法和区别。 1. `empty()` 函数 `empty()` 用于检查...

    php empty,isset,is_null判断比较(差异与异同)

    - `empty` 和 `isset` 都会在变量未定义时抛出错误,而 `is_null` 可以接受未定义的变量,但会返回 `false`。 - `empty` 和 `isset` 接受的参数必须是变量,而 `is_null` 可以接受变量、常量、表达式等。 **使用...

    一张表搞清楚php is_null、empty、isset的区别

    在PHP编程语言中,了解如何正确使用`is_null`, `empty`, 和 `isset`这三个函数至关重要,因为它们在检查变量状态时起到关键作用。下面将详细阐述这三个函数的区别和使用场景。 1. `isset()` 函数: `isset()` 用于...

    深入PHP empty(),isset(),is_null()的实例测试详解

    在PHP开发中,empty()、isset()和is_null()是三个经常被用于变量状态检测的函数。它们各自的检测规则和应用场景都不尽相同。理解这三个函数的不同之处对于编写健壮的代码非常重要。下面将详细解释这三个函数的用法和...

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

    一旦使用 `unset()`,变量将不再存在,之后的 `isset()` 和 `empty()` 都会返回 `false`,而 `is_null()` 无法使用,因为它不再是一个有效的变量。 ```php $a = "Hello"; unset($a); if (isset($a)) { echo ...

    PHP中的empty、isset、isnull的区别与使用实例

    做php开发时候,通常会用到empty,isset,is_null这几个函数,使用不当的话甚至给自己的程序带来一些安全隐患的bug。很多时候,对于isset,empty都认为差不多。因此开发时候,就没有注意,一段作为流程判断时候,就出现...

    PHP中isset、empty的用法与区别示例详解

    本文将深入探讨`isset()`和`empty()`这两个常用的变量检测函数,它们的用法、功能以及两者之间的区别。 `isset()`函数用于检测变量是否已经被设置并且其值不为NULL。其语法如下: ```php isset ( mixed $var [, ...

    PHP 判断数组是否为NULL的5大方法

    `isset()`函数用于检测变量是否已设置并且非NULL。反向逻辑,即`!isset()`,可以用来检测变量是否为NULL。但请注意,`isset()`不适用于数组,因为即使数组为空,它仍然被“设置”了: ```php $array = NULL; if (!...

    PHP表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法

    isset()函数用于检测一个变量是否已经设置并且非NULL。该函数对于确认变量是否存在非常有用,特别是在处理GET或POST请求参数时。例如,在我们的表单验证过程中,我们经常需要检查请求中是否含有某个字段。如果一个...

    PHP isset()及empty()用法区别详解

    在PHP编程语言中,isset()和empty()是两个非常重要的函数,它们用于检查变量的状态,但它们的作用和用法有着显著的区别。理解这两个函数的区别对于编写健壮的PHP代码至关重要。 1. **isset() 函数** - `isset()` ...

    php empty()与isset()区别的详细介绍

    本文将详细介绍PHP中empty()与isset()函数的区别,并通过具体的例子来解释它们各自的使用场景。 首先,了解这两个函数的基本定义和功能是重要的。isset()函数用于检查一个变量是否已经设置并且非NULL。如果变量存在...

    PHP中empty和isset对于参数结构的判断及empty()和isset()的区别

    本文将详细解释isset()和empty()的用法及区别,并通过示例代码来加深理解。 首先,让我们看看它们的共同点。isset()和empty()都是语言结构,而不是真正的函数,这意味着调用它们时不需要加括号。它们都可以返回一个...

Global site tag (gtag.js) - Google Analytics