PHP 怎么高效地判断一个变量是否有“可用”的值?

2015-09-30 13:47:02 +08:00
 benmaowang
对于一个给定的变量,怎么判断这个变量不是 [NULL ,未定义,定义但没赋值,空字符串,空数组]?
我想了下,判断出来当然是可以的,但对这个世界上最好的语言来说太啰嗦了。
那么有没有优雅的方法呢?
3862 次点击
所在节点    程序员
18 条回复
linauror
2015-09-30 13:54:54 +08:00
$a = array(); // 可定义为 null,空字符串,空数组等
if ($a) {
echo 'success';
}

就一个 if ,够优雅吧
abelyao
2015-09-30 14:06:27 +08:00
@linauror
如果 $a = false 那么这里也不通过,但很多时候 false 是一个状态,并非无用值或空值。
soudesuka
2015-09-30 14:06:45 +08:00
isset($var) && $var
wesley
2015-09-30 14:16:28 +08:00
答案在这里:
if ( empty($var)) {
}
linauror
2015-09-30 14:17:23 +08:00
if ($a || $a === false || $a === 0)
好像没那么优雅了,考虑到 false 和 0 的话
flydogs
2015-09-30 14:20:22 +08:00
"有用"还是“没有用”,这个要看实际情况的
null ,空,空数组等等 有些情况也是有用的。

所以还是乖乖自己写个 function 在里面列举一下,其他地方调用吧。
realpg
2015-09-30 14:23:01 +08:00
empty
moro
2015-09-30 14:23:46 +08:00
empty +1
phithon
2015-09-30 14:26:45 +08:00
empty +2
linauror
2015-09-30 14:27:31 +08:00
empty 也并没有排除掉 0 和 false
iyaozhen
2015-09-30 14:38:40 +08:00
这个还是看需求吧。你要干什么?
zonghua
2015-09-30 15:09:15 +08:00
面向过程的 PHP 。。。
anubiskong
2015-09-30 15:36:36 +08:00
换语言^_^
php230
2015-09-30 16:27:10 +08:00
就一个 if ,够优雅吧
nanwangnongfu
2015-09-30 16:35:09 +08:00
在全局变量$GLOBALs 数组里查找,如果存在说明注册了
zjqzxc
2015-09-30 20:35:44 +08:00
php 作为最好的语言,当然一个 if($a)就搞定啦。
不过,考虑到 undefine 这种情况,建议独立检查 isset 。

话说,楼主变量使用前不声明么,干嘛要考虑未定义呢。。如果是函数返回值返回空、 0 、 false 、空数组都有可能,未定义就不太好了吧。
综上,变量先声明再使用 if 。
zhujunsan
2015-09-30 22:46:53 +08:00
http://php.net/manual/zh/types.comparisons.php
附上 PHP 真值表,楼主挑合适的用
xifangczy
2015-10-01 04:07:53 +08:00
@linauror empty 连 '0' 都会看错空

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

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

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

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

© 2021 V2EX