代码将解释更多:
$var = 0;
if (!empty($var)){
echo "Its not empty";
} else {
echo "Its empty";
}
Run Code Online (Sandbox Code Playgroud)
结果返回"空".我以为empty()会检查我是否已设置变量并且内部有值.为什么它会返回"它的空"?
dec*_*eze 170
以下内容被认为是空的:
- ""(空字符串)
- 0(0为整数)
- "0"(0作为字符串)
- 空值
- 假
- array()(一个空数组)
- var $ var; (声明的变量,但在类中没有值)
请注意,这与强制布尔值完全相同false
.empty
很简单!isset($var) || !$var
.试试吧isset
.
Dan*_*oap 73
我想知道为什么没有人建议非常方便的Type比较表.它回答有关常用功能的每个问题并比较运算符.
一个片段:
Expression | empty()
----------------+--------
$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
Run Code Online (Sandbox Code Playgroud)
在其他备忘单上,我总是在桌子上保留这张桌子的硬拷贝以防万一我不确定
Kha*_*azi 32
如果是数值,则应使用is_numeric函数:
$var = 0;
if (is_numeric($var))
{
echo "Its not empty";
}
else
{
echo "Its empty";
}
Run Code Online (Sandbox Code Playgroud)
小智 12
请strlen()
改用.我使用1/0作为一些变量的可能值来讨论相同的问题.我if (strlen($_POST['myValue']) == 0)
用来测试变量中是否有字符.
Oli*_*ams 10
我最近也抓住了这条裤子.我们经常处理的问题是未设置的变量 - 比如可能存在或不存在的表单元素,但是对于许多元素,0
(或者'0'
更准确地通过帖子传递的字符串,但仍然会被评估为"falsey") )是下拉列表中的合法值.
如果您需要empty()
,那么首先使用然后strlen()
是最好的,如:
if(!empty($var) && strlen($var)){
echo '"$var" is present and has a non-falsey value!';
}
Run Code Online (Sandbox Code Playgroud)