简明现代魔法 -> Flex/ActionScript/AIR -> 眩目的标签云

眩目的标签云

2009-10-06

效果演示

简明现代魔法标签云

首先把你的Tags最好放到一个一维的数组里面.比较容易操作。

查询出所有Tags的方法:

$sql = "SELECT tags FROM article";  
$rs = $db->query($sql);  
while ($tags = $db->fetch_array($rs)) {  
    $arr[] = split("\|",$tags['tags']);  
}

$arr这个数组里面就存在着所有的Tags了。但是里面有重复的,有空的,比较郁闷,并且还是个二维数组。

为了解决这个问题,我写了个类,这个类适用于我这种思路设计的Tags筛选。直接看注释吧。

<?php  
/**  
 * Tags标签生成类.  
 *  
 * 适合于数据库中的Tags为文章的一个字段.比如.某个值为:|aaa|bbb|ccc| (注意.前后都要带竖线或者其他符号)  
 * 不再令Tags为一个表.增快查询时间.但是数组组合比较耗时.  
 * 这样做的好处就是一个文章可以有无限多的Tags.在输入的时候一个输入框就可以搞定.用某个特定的符号(比如"|")分隔开就可以了.  
 *  
 * 这个类用于查询数据库中所有的标签.当然你可以在你的SQL语句里进行随机抽出一部分.  
 *   
 * 从标签中查询所有文章SELECT article FROM table WHERE tags LIKE '%|aaa|%'  
 *  
 */ 
class Tags {  
 
    /**  
     * 所有标签  
     *  
     * @var array  
     * @access private  
     */ 
    private $tagsArr = array();  
 
    /**  
     * 构造函数.把数据库中取出来的Tags进行转换  
     *  
     * @param array $array  
     * @return void  
     * @access public  
     */ 
    public function Tags($array){  
        $tags = array();  
        $this->tagsArr = array_unique(array_diff($this->flattenArray($array),array("")));  
    }  
      
    /**  
     * 把二维数组转换成一维数组  
     *  
     * @param array $array  
     * @return array  
     * @access private  
     */ 
    private function flattenArray($array) {  
        while (($v = array_shift($array)) !== null) {  
            if (is_array($v)) {  
                $array = array_merge($v, $array);  
            } else {  
                $tmp[] = $v;  
            }  
        }  
        return $tmp;  
    }  
 
    /**  
     * 获得最终的Tags数组  
     *  
     * @return array  
     * @access public  
     */ 
    public function getTags(){  
        return $this->tagsArr;  
    }  
 
}

这样的话上面的问题就非常简单了,完整的核心代码:

require_once './lib/Tags.php';  
 
$sql = "SELECT tags FROM article";  //在这里你可以随机或者限制一下取出的个数.  
$rs = $db->query($sql);  
while ($tags = $db->fetch_array($rs)) {  
    $arr[] = split("\|",$tags['tags']);  
}  
$tags = new Tags($arr);  
$tagsArr = $tags->getTags(); 

最后的这个$tagsArr就是我们得到的所有Tags的一维数组了。

随机文章推荐
网站分类


注:如需转载本文,请注明出处(原文链接),谢谢。更多精彩内容,请进入简明现代魔法首页。

进入新博客
喜欢本文,就分享它吧
给我留言
您的名字:
您的邮件:
您的网站:


 

copyright © 2009 简明现代魔法    学习、分享、进步

power by Gonn 感谢所有关心和支持本站的朋友们