如何使用php

时间:2016-07-26 03:08:53

标签: php mysql

在wordpress自定义php中,此代码有效:

$result = count_users();
echo 'There are ', $result['total_users'], ' total users';
foreach($result['avail_roles'] as $role => $count) {
    echo $count, ' are ', $role, 's', ', ' . "<br />";
}
echo '.' . "<br />";

以下是输出的示例:

总共有14个用户

1是管理员,
3是s2member_level1s,
13是access_s2member_ccap_video,
13是access_s2member_ccap_saas,
1是access_s2member_ccap_optins,
10是订户,

那么,有没有办法计算所有具有角色的用户,比如说:s2member_level1s,或只有一次调用的access_s2member_ccap_saas,或者我必须这样做,然后每次计算foreach结果?

我希望有一种方法可以一次性计算它们,因此每次加载页面时都不需要花费大量资源和时间来加载页面。

谢谢, 富

3 个答案:

答案 0 :(得分:1)

由于您循环查看结果并打印每个结果的密钥,因此您应该能够使用密钥直接访问结果:

$result = count_users();
echo $result['avail_roles']['s2member_level1s'];

以下是有关数组的更多信息:http://php.net/manual/en/language.types.array.php

答案 1 :(得分:0)

您可以通过这种方式更改查询,以便立即从数据库单个查询中获取结果

select user_id,
    count(*) totalusers,
    sum(case when avail_roles = 'administrators' then 1 else 0 end) administratorsCount,
    sum(case when avail_roles = 's2member_level1s' then 1 else 0 end) s2member_level1sCount,
............
from userstable
group by user_id

所以administratorsCount给出了管理员等数量。

答案 2 :(得分:0)

您可以通过简单地执行mysql查询来完成此操作,而无需运行php循环。您只需要使用group by和您定义角色的列名(例如roletype)。

SELECT count(*), roletype FROM `user` group by roletype