我有以下代码
<?php
$error = array();
$error['something'] = false;
$error['somethingelse'] = false;
if (!empty($error))
{
echo 'Error';
}
else
{
echo 'No errors';
}
?>
Run Code Online (Sandbox Code Playgroud)
但是,即使没有设置,empty($error)仍然会返回true.
什么不对?
ios*_*seb 411
数组中有两个元素,这绝不意味着数组是空的.作为快速解决方法,您可以执行以下操作:
$errors = array_filter($errors);
if (!empty($errors)) {
}
Run Code Online (Sandbox Code Playgroud)
array_filter()功能的默认行为将删除阵列等于所有值null,0,''或false.
否则,在您的特定情况下,如果至少有一个元素,即使具有"空"值,empty()构造也将始终返回true.
bre*_*njt 69
你也可以通过这样做来检查它.
if(count($array) > 0)
{
echo 'Error';
}
else
{
echo 'No Error';
}
Run Code Online (Sandbox Code Playgroud)
0xd*_*0xd 15
sizeof如果0没有元素,请尝试检查它的大小.
wrr*_*ren 15
PHP的内置empty()函数检查变量是否为空,null,false或表示为零.它不会因为与数组条目关联的值为false而返回true,在这种情况下,数组中包含实际元素,并且这些都是已计算的值.
如果要检查关联数组中是否将特定错误条件设置为true,则可以使用array_keys()函数筛选其值设置为true的键.
$set_errors = array_keys( $errors, true );
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用empty()函数检查此数组是否为空,同时告诉您是否存在错误以及发生了哪些错误.
小智 6
具有零元素的数组转换为false
http://php.net/manual/en/language.types.boolean.php