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('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 に答える
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 に答える