PHP Nuage de tag

Un petit bout de code pour un nuage de tag en php fait par mes soins ^^

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public function makeCloud() {
    $array = $this->getTags();
    $barriere = array();
    $inc = max($array)/$this->levels;
    $barriere = array();
    $barriere[] = array('value' => 0,
                            'css' => $this->cssClassPrefix.'0');
    $float = 0;
    for($i = 1;$i <= $this->levels;$i++) {
        $float = $float+$inc;
        $barriere[] = array('value' => $float,
                                'css' => $this->cssClassPrefix.$i);
    }
    $tagcloud = array();
    $previous_value = $barriere[0]['value'];
    foreach($barriere as $key) {
        foreach($array as $row => $value) {
            if($key['value'] >= $value && $previous_value <= $value && !key_exists($row, $tagcloud)) {
                $tagcloud[$row] = array('tag' => $row,
                                            'cssclass' => $key['css']
                );
            }
        }
        $previous_value = $key['value'];
    }
    return $tagcloud;
}

Un petit exemple d’utilisation ici, Exemple de nuage de tag.

Petite precision ligne 2

« $array = $this->getTags(); »

retourne un tableau sous cette forme

Array( [sexe] => 1.74246 [humour] => 1.76121 etc … )

je vous met la fonction juste pour information ^^

1
2
3
4
5
6
7
8
9
10
11
public function getTags() {
    $params = array('table' => 'tagcloud',
                    'fields' => 'tag, count',
                    'order' => 'count ASC',
                    'limit' => $this->view_tags);
    $result = $this->db->select($params);
    foreach($result as $key) {
        $tagsArray[$key['tag']] = $key['count'];
    }
    return $tagsArray;
}