我有下面的代码

<?php

$error = array();
$error['something'] = false;
$error['somethingelse'] = false;

if (!empty($error))
{
    echo 'Error';
}
else
{
    echo 'No errors';
}

?>

然而,empty($error)仍然返回true,即使什么都没有设置。

哪里不对?


当前回答

<?php
if(empty($myarray))
echo"true";
else
echo "false";
?>

其他回答

<?php
if(empty($myarray))
echo"true";
else
echo "false";
?>

然而,empty($error)仍然返回true,即使什么都没有设置。

这不是empty()的工作方式。根据手册,它只在空数组上返回true。其他的都说不通。

从php文档:

如果var具有非空和非零值,则返回FALSE。

以下东西被认为是空的:

"" (an empty string)
0 (0 as an integer)
0.0 (0 as a float)
"0" (0 as a string)
NULL
FALSE
array() (an empty array)
var $var; (a variable declared, but without a value in a class)

你也可以通过。

if(count($array) > 0)
{
    echo 'Error';
}
else
{
    echo 'No Error';
}

试着用sizeof检查它的大小,如果0没有元素。