PHP将页面中点击数量高的链接进行高亮显示的方法
2016-08-18来源:

这里来介绍PHP将页面中点击数量高的链接进行高亮显示的方法,主要受到WordPress中某插件的启发,需要的朋友可以参考下

背景和需求

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

大致的数据结构如下:

{

  "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();

推荐信息
Baidu
map