1

我正在尝试在 PHP 中创建一个简单的标签云。以下是我到目前为止所拥有的,但它不起作用,因为我不知道我在做什么。

对于数据库中的每条记录,标签的存储方式如下: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>';
    }
}
4

3 回答 3

0

它还不是一个数组。用于explode()以逗号分隔。

于 2011-05-21T01:20:16.100 回答
0

http://php.net/manual/en/function.explode.php

$tagsArray = explode(",", $tags);
于 2011-05-21T01:20:17.770 回答
0

首先使用

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

这将使您的字符串进入由“,”分隔的数组。

将您(从explode)获得的每个数组推送到一个数组。

然后创建一个函数,如:

 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>

这将返回一个数组,其中您的标记名作为键,您的计数作为值

于 2011-05-21T01:42:07.733 回答