首页 > 代码库 > 在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,组合成一个数组c30 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 }
在thinkphp中,写的博文标签多对多关系的标签频率统计算法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。