2016-07-29 125 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]); 
    } 
}