我如何检查声明数组是否为空?

时间:2016-07-29 11:34:50

标签: php arrays

我有一个名为 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!!!';
}

如何检查数组是否为空?

3 个答案:

答案 0 :(得分: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";
}
  

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

这样它只返回非空的值。有关详细信息,请参阅文档示例示例#2 array_filter(),不带回调

答案 1 :(得分: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 var。因此,请使用vardump($ tagcat)验证您的结果。

答案 2 :(得分:0)

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

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

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