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

5年以前  |  阅读数:1047 次  |  编程语言:PHP 

背景和需求

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

大致的数据结构如下:


    {
      "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分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例