Home > Article > Backend Development > PHP method to highlight links with high number of clicks on the page, highlight the number of clicks_PHP tutorial
Background and requirements
For example, the left side of the page navigation is categories, and there are many links under the categories. Now I want to count the one with the most clicks under all categories, and do special processing on its color!
The approximate data structure is as follows:
{ "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" } ] }How to classify and highlight this data?
Methods and ideas
The best way to handle it is to align it in the backend PHP.
Idea: We can create a new transition array, loop through the original array, create a classified array, and then put the maximum value and ID of the number of clicks into this array. Through comparison, obtain the ID with the most clicks and the number of clicks in the category, then put the ID with the most times in a new array, loop through the original data, and use the inarray() function to determine whether the ID with the most times is in this In the array, if yes, add an indicator field 1 to the data, if not, it will be 0. Then the field marked with 1 is the one with the most clicks in the category.
The json output after adjustment is:
{ "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 } ] }
The code of php is as follows:
$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();