php中变量的判断之isset()和empty()之间的本质区别在哪里?
怪我咯
怪我咯 2017-04-10 17:32:44
[PHP讨论组]

$str = '';

if($str)

if(isset($str))

if(empty($str))

以上三种写法的区别到底是什么??请详细告知

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(9)
天蓬老师

isset是当且仅当变量为NULL才会返回false,否则返回true
有三种情况下变量为NULL
1、赋值为NULL
2、未被赋值
3、unset()

empty判断支持多种数据类型
数值型(int,float) 0 返回true,非0返回false
String '' 返回true(这里比较有意思的是'0'同样返回true)
布尔类型 false 返回true
array 没有元素返回true
NULL返回true

如果还不了解,希望可以自己动手,把上面的数据类型都用isset和empty比较一下。
希望对你有帮助!

ringa_lee

if($str) $str这个变量是一定要存在的,为空的情况有:null, '', 0, false

isset($str) $str可以不用定义,为空的情况有:null

empty($str) $str也可以不用定义,为空的情况有:null, false, 0, ''

大家讲道理

可参考PHP中empty()和isset()的区别

黄舟

参考php.net

阿神

官方类型比较说明 http://php.net/manual/zh/type...

阿神

你把变量设置为null就了解了。

黄舟

这个,看函数名就能理解他们的区别了。

迷茫

看下这个

高洛峰
$foo = 0;
$foo = '';
$foo = array();
$foo = NULL;
$foo = false;

上面这些情况都被认为是empty,也就是empty($foo)返回真.
所以说if(empty($foo))if(!isset($foo))是不等价的,倒是跟if($foo)有点像.
个人觉得还是用isset好些,避免被坑.

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号