PHP如果数组为空

时间:2014-03-27 16:39:43

标签: php arrays

我有一个数组,当我打印输出时print_r($userExists);

它返回Array ( )我写了这段代码告诉我数组是否为空:

if(isset($userExists)){
        echo 'exists';
    }else{
        echo 'does not exists';
    }

但无论数组是否为空,它都只返回exists我做错了什么,当数组填充时,它看起来像Array ( [0] => Array ( [id] => 10 ) )

4 个答案:

答案 0 :(得分:7)

使用

if( !empty( $userExists ) ) {
    echo 'exists';
}
else {
    echo 'does not exists';
}

if( count( $userExists ) ) {
    echo 'exists';
}
else {
    echo 'does not exists';
}

然而,使用empty()更安全,就好像该变量不存在一样,由于exception count(),您的脚本不会停止。

isset是"不工作" *这里因为这个变量是设置的(所以存在)即使是空的。
所以,基本上,isset

  

确定变量是否已设置且不为NULL。

<小时/> 最后但并非最不重要的,如果你想知道哪个是更好的&#34;对于代码优化,我可以告诉你一点&#34;秘密&#34;:count()每次都不需要遍历数组以知道有多少元素,因为在内部,它存储元素编号(如您所见),因此每次调用count()函数都会导致O(1)复杂性。

ZEND_API int zend_hash_num_elements(const HashTable *ht)
{
    IS_CONSISTENT(ht);

    return ht->nNumOfElements;
}
zend_hash_num_elements调用{p> count()(看一看here

来自php manual



*(不按您的意愿/需要工作)

答案 1 :(得分:1)

使用如下

if(isset($userExists) && count($userExists) > 0 ){
        echo 'exists';
    }else{
        echo 'does not exists';
    }

OR

您可以检查变量是否为数组并具有某个值

if(is_array($userExists) && count($userExists) > 0 ){
    echo 'exists';
}else{
    echo 'does not exists';
}

答案 2 :(得分:0)

$userExists = array();

变量存在,并且已设置。这是isset测试的内容。

你想要的是:

if( $userExists) echo "exists";

答案 3 :(得分:0)

您不需要额外检查if!

if($array){
// Will execute only if there is any value inside of the array
}

通过使用,如果不需要检查是否有任何值! 你正在使用'isset'作为可能不存在的变量,如$ _GET值或$ _SESSION等.... 'empty'来检查字符串值

通过php文档空只能在字符串而不是数组