【发布时间】:2014-09-25 21:02:27
【问题描述】:
根据PHP文档,以下表达式在调用empty($var)时返回true
- “”(空字符串)
- 0(0为整数)
- 0.0(0 作为浮点数)
- “0”(0 作为字符串)
- 空
- 错误
- array()(一个空数组)
- $var; (声明的变量,但没有值)
我已经找到了如何使用empty($var) && $var != 0 来“解决”问题,但是为什么 php 开发人员会这样做呢?
我认为这很荒谬,假设你有这个代码:
if (empty($_POST["X"])) {
doSomething();
}
我觉得"0"不是空的,空就是什么都没有!
也许用起来更好
if (isset($x) && x != "") {//for strings
doSomething();
}
【问题讨论】:
-
因为0也意味着假。
-
我不明白反对意见,这是一个合理的问题,因为“空”意味着缺少数据,而“0”是一个合法的字符串。我也很想知道这背后的原因。
-
因为这是如何定义的。它可能会有所不同,但它是/不是。人们可能会将 perl 的 false-y 值转换归咎于灵感的基础......
-
@user2864740 原作者和我自己都明白,问题是为什么
empty是这样定义的,因为"0"显然不是空的。跨度> -
因为
"" == 0 == 0.0 == "0" == null == false == array() == $var。 php 的类型很松散。
标签: php