热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在thinkphp中,写的博文标签多对多关系的标签频率统计算法

常常看到别人的博客里面,或者网站里面有这样随机颜色,但字体大小与标签出现频率有关的标签云,于是自己就想写一个。至于颜色的随机显示,那就很简单了,这里就不列代码。因为正在学thinkphp,

常常看到别人的博客里面,或者网站里面有这样随机颜色,但字体大小与标签出现频率有关的标签云,于是自己就想写一个。至于颜色的随机显示,那就很简单了,这里就不列代码。

因为正在学thinkphp,所以数据查找的都是用的tp数据查找语句。

 1         Public function render( $data ){
2 //在博文——标签多对多关系的中间表中查找出所有的标签
3 $tags = M('blog_tags')->select();
4 $a = array();
5 //去掉重复的标签,将所有不重复的标签保存在数组a中
6 for($i=0; $i<count($tags); $i++) {
7 if( !in_array( $tags[$i]['tid'], $a ) ){
8 $a[$i] = $tags[$i]['tid'];
9 }
10 }
11 // 查找出这些标签下所有的博文id,保存在数组bid中
12 foreach ($a as $v) {
13 $bid[$v] = M('blog_tags')->where(array('tid'=>$v))->field('bid')->select();
14 }
15 foreach ($bid as $v) {
16 $blog_id[] = $v;
17 }
18 // p($a);
19 // p($blog_id);die;
20 $b = $a;//数组b用来保存原先的数组a,数组a统计标签出现的次数
21 foreach ($a as $k => $v) {
22 $a[$k] = array();
23 for( $j=0;$j<count($tags);$j++ ){
24 if( $v == $tags[$j]['tid'] )
25 $a[$k][0] += 1;
26 }
27 }
28 $i = 0;
29 //将标签id,统计的次数,标签名,博文的id,组合成一个数组c
30 foreach( $b as $k=>$v ){
31 $name = M('tags')->where(array('id' => $v))->getField('name');
32 $c[$i] = array( 'id' => $v, 'num' => $a[$k][0], 'name' => $name,'bid'=>$blog_id[$i] );
33 $i++;
34 }
35 // p($c);die;
36
37 $data['tags'] = $c;
38 return $this->renderFile('', $data);
39 }

 


推荐阅读
author-avatar
不变de诺言2502890365
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有