如何在PHP中实现is_empty()?

时间:2009-09-16 08:41:42

标签: php

如果字符串为“0”或类似的话,PHP中的empty()本机将失败。

那么如何在PHP中实现精确的is_empty()函数?

6 个答案:

答案 0 :(得分:5)

试试这个:

function is_empty(&$val) {
  return empty($val) && $val !== "0";
}

&$val是必需的,因此您不会收到有关未定义变量的警告。

如果您只想检查是否设置了变量(无论其值如何),您应该使用PHP的isset

答案 1 :(得分:1)

如果您要检查是否已定义该变量,则可能需要使用isset。

答案 2 :(得分:1)

查看PHP手册中的type comparison table,了解empty(),isset(),is_null()等的确切行为。您可能会找到您正在寻找的内容。

答案 3 :(得分:1)

我的解决方案:

/**
 * Checks if a scalar value is FALSE, without content or only full of
 * whitespaces.
 * For non-scalar values will evaluate if value is empty().
 *
 * @param   mixed   $v  to test
 * @return  bool    if $v is blank
 */
function is_blank (&$v)
{
    return !isset($v) || (is_scalar($v) ? (trim($v) === '') : empty($v));
}

请参阅http://3960.org/sandbox/empty.php的行为。基本上所有的值都将返回与empty()相同的值,但是对于评估为“0”的字符串和数字。

答案 4 :(得分:0)

非常简单,请检查上述错误情况。如果遇到它,请返回所需的结果。如果没有,请调用empty()并返回该结果。

答案 5 :(得分:0)

我总是添加到我的代码库

function is_blank($value) {
    return empty($value) && !is_numeric($value);
}

并使用它而不是empty()。它解决了将零(int,float或string)保持为非空的问题。

请参阅2011年5月添加的http://www.php.net/manual/en/function.empty.php#103756