我有下面的代码
<?php
$error = array();
$error['something'] = false;
$error['somethingelse'] = false;
if (!empty($error))
{
echo 'Error';
}
else
{
echo 'No errors';
}
?>
然而,empty($error)仍然返回true,即使什么都没有设置。
哪里不对?
我有下面的代码
<?php
$error = array();
$error['something'] = false;
$error['somethingelse'] = false;
if (!empty($error))
{
echo 'Error';
}
else
{
echo 'No errors';
}
?>
然而,empty($error)仍然返回true,即使什么都没有设置。
哪里不对?
当前回答
我不能复制(php 5.3.6):
php > $error = array();
php > $error['something'] = false;
php > $error['somethingelse'] = false;
php > var_dump(empty($error));
bool(false)
php > $error = array();
php > var_dump(empty($error));
bool(true)
php >
到底在哪里执行返回true的empty()调用?
其他回答
零元素数组转换为false
http://php.net/manual/en/language.types.boolean.php
数组中有两个元素,这并不意味着数组是空的。作为一个快速的解决方案,你可以做以下:
$errors = array_filter($errors);
if (!empty($errors)) {
}
Array_filter()函数的默认行为将从数组中删除所有等于null、0或false的值。
否则,在您的特定情况下,如果至少有一个元素具有“empty”值,empty()构造将始终返回true。
我不能复制(php 5.3.6):
php > $error = array();
php > $error['something'] = false;
php > $error['somethingelse'] = false;
php > var_dump(empty($error));
bool(false)
php > $error = array();
php > var_dump(empty($error));
bool(true)
php >
到底在哪里执行返回true的empty()调用?
函数empty()对测试空数组不起作用! 例子:
$a=array("","");
if(empty($a)) echo "empty";
else echo "not empty"; //this case is true
函数是必要的:
function is_array_empty($a){
foreach($a as $elm)
if(!empty($elm)) return false;
return true;
}
好吧,这是一个非常老的问题:),但我发现这个帖子在寻找一个解决方案,我没有找到一个好的。
再见 (英语不好意思)
然而,empty($error)仍然返回true,即使什么都没有设置。
这不是empty()的工作方式。根据手册,它只在空数组上返回true。其他的都说不通。