2016-07-26 42 views
-1

統計用戶表此代碼的工作:如何在WordPress定製的PHP用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結果?

我希望有一種方法可以只用一次拉數來計算它們,因此每次加載頁面時都不需要大量資源和時間來加載頁面。

感謝, 富

+0

是的,一種情況/何時是單向的,用你的輸出的舊1或0的技巧 – Drew

+0

,有你要求的答案,所以我很困惑你想要什麼。「3是s2member_level1s」then「是有一種方法可以計算所有用戶的角色,比如說:s2member_level1s「 – 2016-07-26 03:16:58

+0

它被計算在foreach中:foreach($ result ['avail_roles'] as $ role => $ count){echo $ count,'are',$ role,'s',','。 「
」; } –

回答

1

既然你通過結果循環並打印每一個關鍵,你應該能夠使用鍵直接訪問結果:

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

下面是對數組的更多信息:http://php.net/manual/en/language.types.array.php

+0

請不要鏈接到w3schools,其危險性很差 – 2016-07-26 03:32:57

+0

感謝您注意我/編輯我的文章,但你能向我解釋爲什麼它很糟糕?我發現他們的界面比php文檔稍微乾燥一些,對於初學者來說更容易理解。 – mgadrat

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使管理員等數..

0

你可以通過簡單地執行mysql查詢來執行此操作,而無需運行php循環。您只需使用group by和定義角色的列名稱(例如roletype)即可。

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