【发布时间】:2010-09-29 10:16:58
【问题描述】:
在使用empty() 函数时,PHP 习惯于将 (int)0 和 (string)"0" 评估为空。如果您期望数值或字符串值为 0,这可能会产生意想不到的结果。如何“修复”它以仅对空对象、数组、字符串等返回 true?
【问题讨论】:
-
我个人认为 (int)0 应该评估为假;它只是(字符串)“0”不应该。另外请注意,空对象不算作
empty(),接受的答案不会改变这一点。 -
@Brilliand - 考虑到 php 的整体设计,整数和数字字符串是可以互换的,这可能不是一个好的改变。
-
... 恕我直言,如果
empty对于等于 0 的值是 false 会更简单。那么它通常会按原样有用;我们不需要像这个问答这样的解决方法。在想要包含 0 等效项的情况下,只需执行if (empty($var) || $var == 0)。嗯嗯。