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(),包括那些开源框架

5983 次点击
所在节点    PHP
58 条回复
realpg
2018-11-09 16:43:49 +08:00
这俩不是一个功能,谢谢
barbery
2018-11-09 16:45:57 +08:00
服了,建议多看文档吧
richangfan
2018-11-09 16:45:59 +08:00
这俩不是一个功能,谢谢
helionzzz
2018-11-09 16:46:35 +08:00
一个是检查是否为空,一个是检查是否赋值。。这俩在你看来是可以互相代替的嘛。。
shiny
2018-11-09 16:47:08 +08:00
区别没理解对,建议先啃下文档。
yiqiao
2018-11-09 16:48:52 +08:00
楼主记住这贴是你的耻辱柱,233
alex321
2018-11-09 16:49:26 +08:00
if (isset($data) && !empty($data)) { return $data;}

isset 是检查有么有,empty 是检查有无赋值。。。。
你直接用 if (!empty($data)) { return $data;} 会报 data 未定义的。
yunye
2018-11-09 16:50:45 +08:00
在楼主的学习生涯中强势 mark 一下
zsdroid
2018-11-09 16:55:08 +08:00
你来黑 php 的吧
ThirdFlame
2018-11-09 16:57:38 +08:00
看七楼的解释。
jevonszmx
2018-11-09 17:01:56 +08:00
哈哈,楼主会后悔发了这贴的。
gw1992225
2018-11-09 17:05:47 +08:00
同楼上 , 楼主下次发帖子好好看下 PHP 文档
mayday526
2018-11-09 17:07:16 +08:00
@yiqiao 哈哈哈哈,耻辱柱
JaguarJack
2018-11-09 17:08:09 +08:00
经此一贴,楼主从此放弃使用 php
suit
2018-11-09 17:09:44 +08:00
@alex321 empty 不会报错啊,只有 if ($data)才会报错
silencefent
2018-11-09 17:11:03 +08:00
$arr = [];
var_dump(empty($arr['item'])); bool(true)
var_dump(isset($arr['item'])); bool(false)
toxicant
2018-11-09 17:12:12 +08:00
算是知道 php 为什么招黑了...
OMGZui
2018-11-09 17:12:22 +08:00
羞愧羞愧,一直以来都是把这两个混为一谈,empty()一把梭,在下学习了,好在问出来了。
jfcherng
2018-11-09 17:12:40 +08:00
poisedflw
2018-11-09 17:17:33 +08:00
```
<?php

# 1
$data = [
'key' => ''
];
if (isset($data['key'])) {
echo "not null";
}
if (!empty($data['key'])) {
echo "not empty";
}

#2
$data = [
'key' => null,
];
if (isset($data['key'])) {
echo "not null";
}
if (!empty($data['key'])) {
echo "not empty";
}
```

理解下。

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

https://www.v2ex.com/t/506182

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

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

© 2021 V2EX