如果字符串为“0”或类似的话,PHP中的empty()本机将失败。
那么如何在PHP中实现精确的is_empty()函数?
答案 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。