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 相关文章推荐
用PHP实现小写金额转换大写金额的代码(精确到分)
Jan 10 PHP
在PHP中使用redis
Nov 04 PHP
开源php中文分词系统SCWS安装和使用实例
Apr 11 PHP
php异步多线程swoole用法实例
Nov 14 PHP
php动态添加url查询参数的方法
Apr 14 PHP
Smarty简单生成表单元素的方法示例
May 23 PHP
PHP获取页面执行时间的方法(推荐)
Dec 10 PHP
PHP那些琐碎的知识点(整理)
May 20 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
Feb 21 PHP
YII2框架使用控制台命令的方法分析
Mar 18 PHP
tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
May 26 PHP
Swoole扩展的6种模式深入详解
Mar 04 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
php MySQL与分页效率
2008/06/04 PHP
php smarty模版引擎中变量操作符及使用方法
2009/12/11 PHP
PHP中全局变量global和$GLOBALS[]的区别分析
2012/08/06 PHP
php设置session值和cookies的学习示例
2014/03/21 PHP
Ajax实现对静态页面的文章访问统计功能示例
2016/10/10 PHP
PHP实现递归目录的5种方法
2016/10/27 PHP
基于laravel Request的所有方法详解
2019/09/29 PHP
php设计模式之工厂方法模式分析【星际争霸游戏案例】
2020/01/23 PHP
javascript引导程序
2008/10/26 Javascript
JQuery.get提交页面不跳转的解决方法
2015/01/13 Javascript
javascript实现Table间隔色以及选择高亮(和动态切换数据)的方法
2015/05/14 Javascript
js带前后翻页的图片切换效果代码分享
2015/09/08 Javascript
javascript中字体浮动效果的简单实例演示
2015/11/18 Javascript
JavaScript事件学习小结(一)事件流
2016/06/09 Javascript
深入理解jquery中extend的实现
2016/12/22 Javascript
微信小程序数据存储与取值详解
2018/01/30 Javascript
vue实现自定义多选与单选的答题功能
2018/07/05 Javascript
vue微信分享的实现(在当前页面分享其他页面)
2019/04/16 Javascript
vue中格式化时间过滤器代码实例
2019/04/17 Javascript
Vue.js标签页组件使用方法详解
2019/10/19 Javascript
vue+elementUI组件table实现前端分页功能
2020/11/15 Javascript
vue实现路由不变的情况下,刷新页面操作示例
2020/02/02 Javascript
[01:08:32]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第二场 1月18日
2021/03/11 DOTA
[01:06:43]完美世界DOTA2联赛PWL S3 PXG vs GXR 第二场 12.19
2020/12/24 DOTA
python实现比较两段文本不同之处的方法
2015/05/30 Python
Python验证码识别的方法
2015/07/10 Python
Windows和Linux下Python输出彩色文字的方法教程
2017/05/02 Python
python pytest进阶之conftest.py详解
2019/06/27 Python
在python中用print()输出多个格式化参数的方法
2019/07/16 Python
Python实现AES加密,解密的两种方法
2020/10/03 Python
HTML5标签使用方法详解
2015/11/27 HTML / CSS
印度网上药店:1mg
2017/10/13 全球购物
教育系毕业生中文求职信范文
2013/10/06 职场文书
小学教师师德感言
2014/02/10 职场文书
党建工作汇报材料
2014/12/24 职场文书
三十年同学聚会感言
2015/07/30 职场文书