2016-07-29 83 views
0

我呼吁tagcat一个数组,像这样如何检查一个声明数组是否为空?

$tagcat = array(); 

.... 
while ($stmt->fetch()) { 
    $tagcat[$tagid] = array('tagname'=>$tagname, 'taghref'=>$taghref); 
} 

使用的print_r($ tagcat)我得到以下结果集

Array ([] => Array ([tagname] => [taghref] =>)) 

使用的var_dump($ tagcat),我得到

array(1) { [""]=> array(2) { ["tagname"]=> NULL ["taghref"]=> NULL } } 

在php中,我想检查数组是否为空。但是,当使用以下条件时,它总是会在数组中找到某些东西,这是不正确的!

if (isset($tagcat)) { 
    echo 'array is NOT empty'; 
} else { 
    echo 'EMPTY!!!'; 
} 

if (!empty($tagcat)) { 
    echo 'array is NOT empty'; 
} else { 
    echo 'EMPTY!!!'; 
} 

如何检查数组是否为空?

+1

如果你做'的print_r(tagcat)您能得到什么;'。另外我假设你的意思是'tagcat'是一个定义而不是一个变量,因为你前面没有'$'。是否有更多的代码显示? – Henders

+1

@Henders修正了错字+还编辑了这个问题来回答你的问题 – Marco

+2

可能重复[如何判断一个PHP数组是否为空?](http://stackoverflow.com/questions/2216052/how-to-tell- if-a-php-array-is-empty) –

回答

3

使用array_filter

if(!array_filter($array)) { 
    echo "Array is empty"; 
} 

这是检查单个阵列。对于你的情况下的多维数组。我想,这应该工作:

$empty = 0; 
foreach ($array as $val) { 
    if(!array_filter($val)) { 
    $empty = 1; 
    } 
} 

if ($empty) { 
    echo "Array is Empty"; 
} 

如果没有回调提供,$阵列等于FALSE的所有条目将被删除。

这样它只返回非空的值。看到更多的在该文档例如实施例#2 array_filter(),而不回调

0

如果需要检查是否存在阵列中的任何元素

if (!empty($tagcat)) { //its $tagcat, not tagcat 
    echo 'array is NOT empty'; 
} else { 
    echo 'EMPTY!!!'; 
} 

此外,如果需要之前清空值检查

foreach ($tagcat as $cat => $value) { 
    if (empty($value)) { 
     unset($tagcat[$cat]); 
    } 
} 
if (empty($tagcat)) { 
    //empty array 
} 

希望它可以帮助

编辑:我看到你编辑你的$ tagcat变种。所以,用vardump($ tagcat)验证你的结果。

0
if (empty($array)) { 
// array is empty. 
} 

,如果你想删除空元素试试这个:

foreach ($array as $key => $value) { 
    if (empty($value)) { 
    unset($array[$key]); 
    } 
}