我有下面的代码

<?php

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

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

?>

然而,empty($error)仍然返回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)

其他回答

PHP内置的empty()函数检查变量是否为空、null、false或0的表示。它不会因为与数组项关联的值为false而返回true,在这种情况下,数组中有实际的元素,这就是所有的计算。

如果想检查关联数组中某个特定的错误条件是否被设置为true,可以使用array_keys()函数筛选值设置为true的键。

$set_errors = array_keys( $errors, true );

然后可以使用empty()函数检查该数组是否为空,同时告诉您是否有错误以及发生了哪些错误。

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

我不能复制(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()调用?

你也可以通过。

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

Hi数组是一个对象,所以它是空类型或空白

   <?php
        if($error!=null)
            echo "array is blank or null or not array";
    //OR
       if(!empty($error))
           echo "array is blank or null or not array";
    //OR
     if(is_array($error))
           echo "array is blank or null or not array";
   ?>