输出EMLOG用户信息 - 发表日志数量排序

简爱未分类2015-1-30 0:1641650
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>";

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


本文出自简爱博客,转载时请注明出处及相应链接。

    发表评论

    电子邮件地址不会被公开。必填项已用*标注