2015-03-13 52 views
0

我正在嘗試計算活動用戶數和非活動用戶數。從PHP數組返回的每個項目的總和

首先我得到的所有用戶數據: $userData = fetchAllUsers();

然後我寫了foreach一共拿到誰是活躍用戶,誰是非有效用戶。

foreach ($userData as $key => $value) { 
$active = $value['active']; 
if($active == 1){ 
    $activeUsers = count($active); 
    print_r($activeUsers); 
} elseif($active == 0) { 
    $unactiveUsers = count($active); 
    print_r($unactiveUsers); 
} 

} 

所有打印的是1111111。數據庫中有5個用戶設置爲1(有效),2個用戶設置爲0(無效)。所以我期待將這些添加到5個活動和2個無效。

我試過countarray_sumarray_count_values。沒有什麼似乎在做我所需要的。任何幫助將不勝感激。有人能指引我朝着正確的方向嗎?

+0

看來數據串,嘗試用它來迫使'(INT)$ variable' – abaracedo 2015-03-13 19:30:58

回答

5

你在循環中,你不需要count。只需增加一個櫃檯你自己。等到你完成了你的循環以吐出結果。

$activeUsers = 0; 
$inactiveUsers = 0; 

foreach ($userData as $key => $value) { 
    $active = $value['active']; 
    if($active == 1){ 
     $activeUsers++; 
    } elseif ($active == 0) { 
     $inactiveUsers++; 
    } 
} 

var_dump($activeUsers); 
var_dump($inactiveUsers); 
+0

哈您18秒:-D – flyandi 2015-03-13 19:32:39

+0

@Andy尼斯=)擊敗我雖然你的代碼是有點多簡潔,我認爲我的初學者更容易理解。 – JoeCoder 2015-03-13 19:33:19

+0

同意:-) ..雖然從來沒有不好介紹良好的做法早日.. – flyandi 2015-03-13 19:35:03

3

您需要計算一個變量,例如,

$active = 0; 
$inactive = 0; 

foreach ($userData as $key => $value) { 
switch(true) { 
    case $value['active'] == 1: $active++; break; 
    default: $inactive++; break; 
} 
} 

var_dump("Active users" + $active); 
var_dump("Inactive users" + $inactive);