PHP 中用 isset()和 empty()哪个更好

2018-11-09 16:40:28 +08:00
 OMGZui

两者的区别,简单来说就是:

isset(""); // true
empty(""); // true

isset([]); // true
empty([]); // true

isset(false); // true
empty(false); // true

isset(0); // true
empty(0); // true

isset("0"); // true
empty("0"); // true

个人认为empty()更合理,毕竟弱类型,要弱就弱到底呗,但是看到很多地方用isset(),包括那些开源框架

6217 次点击
所在节点    PHP
58 条回复
seven2016
2018-11-09 17:21:08 +08:00
这个都没有区分清楚,这是要写下多少 bug 呀
airdge
2018-11-09 17:29:58 +08:00
一个变量存在 一个变量非空或非零
两个功能不一样
WytheHuang
2018-11-09 17:31:15 +08:00
> empty 判断一个变量是否被认为是空的。当一个变量并不存在,或者它的值等同于 FALSE,那么它会被认为不存在。如果变量不存在的话,empty()并不会产生警告。

手册看一遍吧。
WytheHuang
2018-11-09 17:33:25 +08:00
再上一条
> 没有警告会产生,哪怕变量并不存在。 这意味着 empty() 本质上与 !isset($var) || $var == false 等价。
hubahuba
2018-11-09 17:37:04 +08:00
楼主 你这个号算是废了= = 要是让人家知道。。你有工作丢工作 没工作找不到工作= =
hubahuba
2018-11-09 17:37:22 +08:00
哈哈哈最关键的是一本正经的装逼 结果装逼失败
way2create
2018-11-09 17:39:17 +08:00
看英文也知道不能一概而论
OMGZui
2018-11-09 17:39:28 +08:00
@hubahuba 学习交流贴,话说我也没装逼吧
hubahuba
2018-11-09 17:41:29 +08:00
@OMGZui #28 楼主加油!
OMGZui
2018-11-09 17:43:30 +08:00
@way2create 是不能一概而论,主要是平时编码的时候都是判断变量是否为空,那么两个函数功能就是一样的
mayday526
2018-11-09 17:49:39 +08:00
@OMGZui 别人回复了一大圈,你还是没懂
freefcw
2018-11-09 17:55:28 +08:00
都不懂什么叫做语义么,虽然都能做某件事,但是你代码要做什么,通过使用哪个函数就能区别出来

我对这两个函数特别讨厌,因为滥用的人太多了,这两个函数功能太泛了,无法给出代码的含义
OMGZui
2018-11-09 18:01:46 +08:00
@freefcw 感谢指点,明白了
VeryZero
2018-11-09 18:01:52 +08:00
有这种情况是变量未定义。。
Seanfuck
2018-11-09 18:03:44 +08:00
从不用 empty,直接 if($x)。isset 需要时必须要用的
chairuosen
2018-11-09 18:09:00 +08:00
这俩玩意语意是相反的,有个判断有,一个判断无。你给出的全是结果相同的特例。居然能认为可以相互替换?
ruixingchen
2018-11-09 18:09:31 +08:00
KiseXu
2018-11-09 18:13:47 +08:00
哥们,isset() 不等于 !empty(),
比如 $x = ""; ,isset() 、empty() 结果都是 true

官方文档有详细的比较: http://php.net/manual/zh/types.comparisons.php
klgd
2018-11-09 19:43:16 +08:00
```
$a = null;
$b = 0;
isset($a); // false
isset($b); // true
empty($a); // true
empty($b); // true
```
mingyun
2018-11-09 22:02:55 +08:00
7 楼正解

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/506182

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX