Welcome 微信登录

首页 / 网页编程 / PHP / 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();