2011-06-14 97 views
12

我有一個數組如何檢查數組中的所有鍵在PHP中是否有空值?

$array = array('key1' => null, 'key2' => null, 'key3' => null, 'key4' => null); 

我想,以確定是否所有的數組鍵爲空值,如果是,則返回false。上面的例子應該返回false,因爲它沒有任何值。但是如果一個或多個鍵有任何值,那麼它應該返回true,例如下面的例子是真的。

$array = array('key1', 'key2' => value2, 'key3', 'key4' => value4); 
+1

所有按鍵確實有值,按鍵只是沒有什麼你認爲他們是。 '陣列 ( [0] => KEY1 [1] => KEY2 [2] => KEY3 [3] => KEY4 )'和'陣列 ( [0] => KEY1 [KEY2 ] => value2 [1] => key3 [key4] => value4 )''。 – Quentin 2011-06-14 06:12:28

+0

對不起,我知道這一點,並且我錯過了這個觀點:) – 2011-06-14 06:15:32

回答

39

假設你真正的意思是像

array('key1' => null, 'key2' => null, 'key3' => null, 'key4' => null) 

一個數組答案很簡單

if (!array_filter($array)) { 
    // all values are empty (where "empty" means == false) 
} 
+0

是的,這正是我的意思:)。我正在尋找這個。謝謝 – 2011-06-14 06:18:25

4

你的假設是不正確的。 array('key1', 'key2', 'key3', 'key4')有4個值和密鑰0..3

array('key1', 'key2' => value2, 'key3', 'key4' => value4)具有值key1(與關鍵0)中,密鑰key2,值key3(用標號1)和密鑰key4

+0

@Ibrahim:嘗試'print_r($ array)',那麼你應該看看你的數組是怎樣的。 blagovest完全正確。 – Fender 2011-06-14 06:12:26

+0

啊是的,我錯過了這個觀點:) – 2011-06-14 06:13:15

0
$flag = 0; 
foreach($array as $keys) 
{ 
     if(!isempty($keys)) { 
     $flag++; 
     } 
} 

if(flag > 0) 
{ 
    echo "Array not empty!"; 
} 
else { 
    echo "Array empty!"; 
} 

應該工作。

+0

isempty()是不正確的語法來檢查數組鍵是否有emoty值。正確的語法只是空()。 :)。還是謝謝你,我明白你想要解釋的。 – 2011-06-14 06:23:40

+0

我的錯誤。 :p有一段時間沒有碰到php。 :D – Anonymous 2011-06-14 06:32:32

2

@Blagovest對你錯誤的問題表達是正確的。

$allEmpty = true; 
foreach($array as $key => $val) { 
    if(isset($array[$key])) { 
     $allEmpty = false; 
     break; 
    } 
} 

// Do what you will with $allEmpty 
1

我想你的意思是檢查所有鑰匙是否是數字,或者至少有一個是字符串:

$ok = false; 
foreach(array_keys($array) as $key){ 
    if(is_string($key)){ 
     $ok=true; 
     break; 
    } 
} 

return $ok; 
0
$array = array('key1' => null, 'key2' => null, 'key3' => null, 'key4' => null); 

答案是

$filterArray = array_filter($array); 

if(count($filterArray) == 0){ 
    return false; 
}else{ 
    return true; 
} 
相關問題