代码将解释更多:
$var = 0;
if (!empty($var)){
echo "Its not empty";
} else {
echo "Its empty";
}
结果返回"Its“。我认为empty()将检查我是否已经设置了变量并在其中设置了值。为什么它返回"Its empty"??
发布于 2010-02-08 17:30:16
我想知道为什么没有人推荐极方便的Type comparison table。它回答了关于公共函数和比较运算符的所有问题。
一个片段:
Expression | empty($x)
----------------+--------
$x = ""; | true
$x = null | true
var $x; | true
$x is undefined | true
$x = array(); | true
$x = false; | true
$x = true; | false
$x = 1; | false
$x = 42; | false
$x = 0; | true
$x = -1; | false
$x = "1"; | false
$x = "0"; | true
$x = "-1"; | false
$x = "php"; | false
$x = "true"; | false
$x = "false"; | false
和其他小抄一样,我总是在办公桌上放一份这张桌子的硬拷贝,以防我不确定
发布于 2013-05-29 15:22:54
对于数值,您应该使用is_numeric函数:
$var = 0;
if (is_numeric($var))
{
echo "Its not empty";
}
else
{
echo "Its empty";
}
发布于 2015-11-10 20:21:13
我最近在这件事上也被抓到了。我们经常处理的问题是未设置的变量--比如一个表单元素,可能存在也可能不存在,但对于许多元素来说,0
(或字符串'0'
,它会通过post更准确,但仍然会被计算为"falsey")在下拉列表中是一个合法的值。
如果您也需要这样做,那么首先使用empty()
,然后使用strlen()
是最好的选择,因为:
if(!empty($var) && strlen($var)){
echo '"$var" is present and has a non-falsey value!';
}
https://stackoverflow.com/questions/2220519
复制相似问题