开发者社区> ndblog> 正文

php中empty(),isset(),is_null(),==,===区别

简介: 有关 PHP 的 empty(),isset() 还有 is_null() 这三个函数的用法讨论得已经很多了,而且很多资料也未必能说得很清楚。这里再重复一次,但不是从概念去说,直接用程序例子来说话,应该记忆会比较深刻些。
+关注继续查看

有关 PHP 的 empty(),isset() 还有 is_null() 这三个函数的用法讨论得已经很多了,而且很多资料也未必能说得很清楚。这里再重复一次,但不是从概念去说,直接用程序例子来说话,应该记忆会比较深刻些。

测试的类型如下:

<?php

$a;
$b = false;
$c = '';
$d = 0;
$e = null;
$f = array();

?>

empty()

首先是empty()的var_dump输出:

<?php

var_dump(empty($a));
var_dump(empty($b));
var_dump(empty($c));
var_dump(empty($d));
var_dump(empty($e));
var_dump(empty($f));

?>

程序输出为:

$a;           : bool(true)
$b = false;   : bool(true)
$c = '';      : bool(true)
$d = 0;       : bool(true)
$e = null;    : bool(true)
$f = array(); : bool(true)

从代码中可以看出,只要数据类型是否为空或假,empty()就输出true。

isset()

再看看isset的输出:

var_dump(isset($a));
var_dump(isset($b));
var_dump(isset($c));
var_dump(isset($d));
var_dump(isset($e));
var_dump(isset($f));

// 输出
$a;           : bool(false)
$b = false;   : bool(true)
$c = '';      : bool(true)
$d = 0;       : bool(true)
$e = null;    : bool(false)
$f = array(); : bool(true)

可以看出isset()只能用来判断是否为NULL和未定义。

is_null()

最后是is_null的输出:

var_dump(is_null($a));
var_dump(is_null($b));
var_dump(is_null($c));
var_dump(is_null($d));
var_dump(is_null($e));
var_dump(is_null($f));

// 输出
$a;           : bool(true)
$b = false;   : bool(false)
$c = '';      : bool(false)
$d = 0;       : bool(false)
$e = null;    : bool(true)
$f = array(); : bool(false)

is_null 字面意思了。

由此可见 empty() 可以用来判定所有的数据类型是否为空或假,包含数组是否有元素,而 is_null 与 isset 基本一样,只能用来判断是否为NULL和未定义。

 

==和===区别:

===是恒等计算符   同时检查表达式的值与类型

==是比较运算符号  不会检查条件式的表达式的类型

举例

if (strstr($new_url,'http://') === false) 

 

NULL,FALSE,array(),"",0,"0"这几个值如果用==他们是相等的,

判断出某个值真正的返回值呢,就可以用 ===

$a = 0;(数值)

$b = FALSE;(布尔)

$a === FALSE (类型不一样)不成立

$b === FALSE(类型一样)成立

 

由于==不会检查条件式的表达式类型

所以

0即是数值0,也是布尔FALSE,==不强制类型一致性,故以下:

$a == FALSE 和 $b == FALSE都成立

===的用途

PHP某些内置函数成功会返回数值还有" "、0之类的空值,失败会返回false,

用==符号无法判断,而用===就可以判断出来,它区分了返回值的值及类型。

例如:

var_dump(stripos('中国','中') == false);    输出:true 

var_dump(stripos('中国','中') === false);  输出:false

作者:Tyler Ning
出处:http://www.cnblogs.com/tylerdonet/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过以下邮箱地址williamningdong@gmail.com  联系我,非常感谢。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
PHP踩坑记录-empty判断浮点型
PHP踩坑记录-empty判断浮点型
28 0
PHP:empty判断对象为空
PHP:empty判断对象为空
36 0
PHP的isset和empty
PHP的isset和empty
56 0
PHP灵活用isset替换count
虽然语言都差不多,但是每种语言都是有不一样的地方的,所谓的大同小异,总是需要琢磨和讲究后才能有所领悟的。
2502 0
php empty()和isset()
2015年12月11日 10:59:08 1 echo phpversion(); //5.6.13 2 3 $a = array( 4 'aaa' => 1, 5 'bbb' => 0, 6 'ccc' => null, 7 ); 8 ...
933 0
PHP中空字符串介绍0、null、empty和false之间的关系
PHP中空字符串介绍0、null、empty和false之间的关系 作者: 字体:[增加 减小] 类型:转载 时间:2012-09-25   用PHP开发那么久,PHP中空字符串、0、null、empty和false之间的关系总是有些不确定的东西。
920 0
PHP isset()与empty()的使用区别详解
原文:PHP isset()与empty()的使用区别详解 PHP的isset()函数 一般用来检测变量是否设置 格式:bool isset ( mixed var [, mixed var [, ...]] ) 功能:检测变量是否设置 返回值: 若变量不存在则返回 FALSE 若变量存在且其值为NULL,也返回 FALSE 若变量存在且值不为NULL,则返回 TURE 同时检查多个变量时,每个单项都符合上一条要求时才返回 TRUE,否则结果为 FALSE 版本:PHP 3, PHP 4, PHP 5 更多说明: 使用 unset() 释放变量之后,它将不再是 isset()。
1094 0
+关注
ndblog
不冒任何险,什么都不做,什么也不会有,什么也不是。
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
复杂PHP系统性能瓶颈排查及优化
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关实验场景
更多