PHP将页面中点击数量高的链接进行高亮显示的方法


Posted in PHP onMay 30, 2016

背景和需求

就好比说页面导航的左侧是分类,分类下面有很多链接。我现在想统计所有分类下面点击次数最多的一个,并把其颜色做特殊处理!

大致的数据结构如下:

{
  "content": [
    {
      "id": "1",
      "name": "htmldrive",
      "url": "http://www.htmldrive.net/",
      "cate": "前端开发",
      "clickpoint": "100"
    },
    {
      "id": "2",
      "name": "17素材网",
      "url": "http://www.17sucai.com/",
      "cate": "前端开发",
      "clickpoint": "151"
    },
    {
      "id": "3",
      "name": "阿里妈妈图标库",
      "url": "http://www.iconfont.cn/",
      "cate": "前端开发",
      "clickpoint": "2"
    },
    {
      "id": "53",
      "name": "Animate.css",
      "url": "http://www.haorooms.com/uploads/example/Animatecss/",
      "cate": "前端开发",
      "clickpoint": "21"
    },
    {
      "id": "55",
      "name": "Dafont",
      "url": "http://www.dafont.com/",
      "cate": "字体",
      "clickpoint": "1"
    }
 ]
}
如何对这些数据进行分类高亮显示呢?

方法和思路

最好的处理方式是在后端PHP中对齐进行处理。

思路:我们可以创建一个新的过渡数组,对原来的数组进行循环,创建一个分类的数组,然后把点击次数中的最大值和ID放到这个数组中。通过比较,获取分类中点击次数最多的ID和点击次数,然后把这个次数最多的ID放在一个新的数组中,循环原来的数据,通过inarray(),函数判断次数最多的ID是不是在这个数组当中,是的话,就给数据增加一个标示字段1,不是的话就是0。那么标示字段为1的就是分类中点击次数最多的。

调整之后输出的json是:

 

{
    "content": [
      {
        "id": "1",
        "name": "htmldrive",
        "url": "http://www.htmldrive.net/",
        "cate": "前端开发",
        "clickpoint": "100",
       "max": 0
      },
      {
        "id": "2",
        "name": "17素材网",
        "url": "http://www.17sucai.com/",
        "cate": "前端开发",
        "clickpoint": "151",
        "max": 1
      },
      {
        "id": "3",
        "name": "阿里妈妈图标库",
        "url": "http://www.iconfont.cn/",
        "cate": "前端开发",
        "clickpoint": "2",
        "max": 0
      },
      {
        "id": "53",
        "name": "Animate.css",
        "url": "http://www.haorooms.com/uploads/example/Animatecss/",
        "cate": "前端开发",
        "clickpoint": "21",
        "max": 0
      },
      {
        "id": "55",
        "name": "Dafont",
        "url": "http://www.dafont.com/",
        "cate": "字体",
        "clickpoint": "1",
        "max": 0
      }
   ]
  }

php的代码如下:

$sql = "select id,name,url,cate,clickpoint from commonwebsite order by id asc ";
  $res= $db->getAll($sql);
  $temp_arr = array();
  foreach ($res as $key => $value) {
  if(!isset($temp_arr[$value['cate']])){
   $temp_arr[$value['cate']] = array();
   $temp_arr[$value['cate']]['max'] = $value['clickpoint'];
   $temp_arr[$value['cate']]['id'] = $value['id'];
  }else{
   if($value['clickpoint']>$temp_arr[$value['cate']]['max']){
    $temp_arr[$value['cate']]['max'] = $value['clickpoint'];
    $temp_arr[$value['cate']]['id'] = $value['id'];
   }
  }
  }
 $temp_id = array(); //创建一个存放ID的临时数组
  foreach ($temp_arr as $val) {//循环之前创建的临时数组,存放分类和最多点击次数的
  $temp_id[] = $val['id']; //将点击次数最多的ID赋值给了临时数组
  }
   foreach ($res as $key => $vals) { //循环原来的数据
   if(in_array($vals['id'], $temp_id)){//如果次数最多的ID在原来的数组的ID中,那个加一个字段max并设置其值为1
    $res[$key]['max'] =1;
   }else{
    $res[$key]['max'] =0;//否则不是点击次数最多的,设置为0
   }
  }
  $result['content'] = $res;
    die(json_encode($result)); //json输出
  exit();
PHP 相关文章推荐
利用 window_onload 实现select默认选择
Oct 09 PHP
给初学PHP的5个入手程序
Nov 23 PHP
php更改目录及子目录下所有的文件后缀的代码
Sep 24 PHP
PHP三元运算符的结合性介绍
Jan 10 PHP
php模板原理讲解
Nov 13 PHP
PHP简单获取视频预览图的方法
Mar 12 PHP
PHP使用GETDATE获取当前日期时间作为一个关联数组的方法
Mar 19 PHP
Discuz!X中SESSION机制实例详解
Sep 23 PHP
php json中文编码为null的解决办法
Dec 14 PHP
PHP判断一个数组是另一个数组子集的方法详解
Jul 31 PHP
php将从数据库中获得的数据转换成json格式并输出的方法
Aug 21 PHP
TP5框架简单登录功能实现方法示例
Oct 31 PHP
PHP如何实现跨域
May 30 #PHP
php while循环控制的简单实例
May 30 #PHP
Yii2中如何使用modal弹窗(基本使用)
May 30 #PHP
[原创]php求圆周率的简单实现方法
May 30 #PHP
smarty中改进truncate使其支持中文的方法
May 30 #PHP
php实现的一段简单概率相关代码
May 30 #PHP
PHP中的表达式简述
May 29 #PHP
You might like
Laravel框架实现调用百度翻译API功能示例
2019/05/30 PHP
自定义Laravel (monolog)日志位置,并增加请求ID的实现
2019/10/17 PHP
jQuery Ajax 全解析
2009/02/08 Javascript
javascript 写类方式之二
2009/07/05 Javascript
jQuery 创建Dom元素
2010/05/07 Javascript
ExtJS4如何给同一个formpanel不同的url
2014/05/02 Javascript
深入探讨JavaScript String对象
2015/03/09 Javascript
JavaScript在浏览器标题栏上显示当前日期和时间的方法
2015/03/19 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
2016/01/23 Javascript
Bootstrap菜单按钮及导航实例解析
2016/09/09 Javascript
Nodejs高扩展性的模板引擎 functmpl简介
2017/02/13 NodeJs
JavaScript实现时间表动态效果
2017/07/15 Javascript
jQuery each和js forEach用法比较
2019/02/27 jQuery
Js生成随机数/随机字符串的方法小结【5种方法】
2020/05/27 Javascript
vue.js实现照片放大功能
2020/06/23 Javascript
[50:20]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第四局
2016/03/06 DOTA
Python 不同对象比较大小示例探讨
2014/08/21 Python
仅用50行Python代码实现一个简单的代理服务器
2015/04/08 Python
编写Python脚本来实现最简单的FTP下载的教程
2015/05/04 Python
Python中字典(dict)合并的四种方法总结
2017/08/10 Python
Python自定义简单图轴简单实例
2018/01/08 Python
Python matplotlib绘图可视化知识点整理(小结)
2018/03/16 Python
python实现csv格式文件转为asc格式文件的方法
2018/03/23 Python
通过实例学习Python Excel操作
2020/01/06 Python
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法
2020/08/18 Python
python实现AdaBoost算法的示例
2020/10/03 Python
PyQt5通过信号实现MVC的示例
2021/02/06 Python
华为c/c++笔试题
2016/01/25 面试题
Delphi工程师笔试题
2013/09/21 面试题
党委书记岗位职责
2013/11/24 职场文书
海飞丝广告词
2014/03/20 职场文书
党的群众路线教育实践活动个人承诺书
2014/05/22 职场文书
大学生学习计划书
2014/09/15 职场文书
支部书记四风问题自我剖析材料
2014/09/29 职场文书
敬老院活动感想
2015/08/07 职场文书
2016年感恩教师节校园广播稿
2015/12/18 职场文书