2011-05-21 57 views
1

我想在PHP中創建一個簡單的標籤雲。以下是我目前爲止的內容,但不工作,因爲我不知道我在做什麼。PHP array_map()

對於數據庫中的每條記錄,標籤都是這樣存儲的:tag1,tag2,tag3等......因此,我必須先以某種方式獲取記錄,然後將它們分解成單獨的標籤並以這種方式顯示它們。任何幫助將不勝感激。

// DB: get snippet tags 
$get_snippet_tags = mysqli_query($conn, "SELECT Tags FROM snippets WHERE IsPublic = 1 LIMIT 20") 
or die($dataaccess_error); 

if(mysqli_num_rows($get_snippet_tags) > 0) 
{ 
    while($row = mysqli_fetch_array($get_snippet_tags)) 
    { 
     $snippet_tags = $row['Tags']; 

     // explode tags 
     $tags_array = array_map('string', $snippet_tags); 
     $cloud_tag = implode(", ", $tags_array); 

     // echo out resluts 
     echo '<a href="#">'.$tags_array.'</a>'; 
    } 
} 
+0

順便說一句,我想'echo''.$could_tag.'';'而不是'echo''.$tags_array.'';'除非你打算循環播放它們或其他東西 – 2011-05-21 01:23:40

回答

0

首先使用

explode('separator','string'); like explode(',',$row['Tags']); 

這會讓你的字符串中分隔數組 ''。

將您獲得的每個數組(從爆炸中)推送到數組。

然後創建一個功能:

function value_occurs($arr) { 
     $arr2=array(); 
     if(!is_array($arr['0'])){$arr=array($arr);} 
     foreach($arr as $k=> $v){ 
      foreach($v as $v2){ 
       if(!isset($arr2[$v2])){ 
        $arr2[$v2]=1; 
       }else{ 
        $arr2[$v2]++; 
      } 
     } 
    } 
    return $arr2; 
} 

,並調用它

$result = value_occurs($theArrayWithAllTheTags);<br> 

這將返回數組與標記名鍵,你算不算值

+0

謝謝你的幫助。 – usnidorg 2011-05-21 01:57:36

0

這不是一個數組呢。使用explode()以逗號分隔。