2015-03-13 56 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);