我正在尝试用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>';
}
}
答案 0 :(得分:0)
它还不是阵列。使用explode()
分隔逗号。
答案 1 :(得分:0)
http://php.net/manual/en/function.explode.php
$tagsArray = explode(",", $tags);
答案 2 :(得分: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>
这将返回一个数组,其中您的标记名为键,计数为值