简爱博客
输出EMLOG用户信息 - 发表日志数量排序
2015-1-30 简爱
EMLOG 按用户发表日志数量 排序输出

晚上在群里有人问到,当时忙着写采集代码的代码

么来得及细看,只是匆匆的回了 个 读取 用户缓存 $CACHE -> readCache('user');  至于排序当然是 PHP 自定义排序函数 uasort



没曾想 还真给说错了

不在 user 缓存里面,应该是 sta 才对



这会儿 采集代码也测试完毕了,就顺手把 输出 EMLOG 用户信息 以 日志数量排序给写出来了

关键的函数还是 uasort

<?php
/**
* 返回 EMLOG 用户列表 数组 (文章数量排序)
*
* EMLOG 测试版本 5.3.1, 返回的数据是 集合了 user 与 sta 缓存的数据
*
* $asc bool 是否为升序排列 默认 fasle
**/
function ja_get_users($asc = false){
global $CACHE;

$cache_sta = $CACHE -> readCache('sta');

// 删除 不需要的数组元素 方法 1
unset(
$cache_sta['lognum'],
$cache_sta['draftnum'],
$cache_sta['comnum'],
$cache_sta['comnum_all'],
$cache_sta['twnum'],
$cache_sta['hidecomnum'],
$cache_sta['checknum']
);

// 删除 不需要的数组元素 方法 2
// ksort($cache_sta); $cache_sta = array_slice($cache_sta, 7, 999, true);

uasort($cache_sta, function ($a, $b){
return $a['lognum'] == $b['lognum'] ? 0 : $a['lognum'] < $b['lognum'] ? 1 : -1;
});

if($asc) $cache_sta = array_reverse($cache_sta, true);

// 获取用户信息
$cache_user = $CACHE -> readCache('user');


foreach($cache_sta as $uid => &$v){
$v = array_merge($v, $cache_user[$uid]);
}
return $cache_sta;
}


$user_list = ja_get_users(); // 默认 倒序排列, 如需正序 传入 true 即可


// 下面只是 输出演示 的例子
echo "<ol>";
foreach($user_list as $val){
extract($val);
/**
* 可用变量
* $lognum
* $draftnum
* $commentnum
* $hidecommentnum
* $twnum
* $avatar
* $name
* $mail
* $des
* $ischeck
* $role
* 两外还有 $photo
**/
echo "
<li>
<ul>
<li>UID: $uid</li>
<li>用户名: $name</li>
<li>文章数: $lognum</li>
</ul>
</li>";
}
echo "</ol><pre>";
print_r($user_list); // 输出原始数组
echo "</pre>";



转载代码能否注明出何处?