PHP数组_映射()
我正在尝试用PHP创建一个简单的标记云。以下是我到目前为止所做的,但它不起作用,因为我不知道我在做什么 对于数据库中的每条记录,标记存储方式如下:tag1、tag2、tag3等。。。因此,我必须首先以某种方式获取记录,然后将其分解成单独的标记并以这种方式显示。任何帮助都将不胜感激PHP数组_映射(),php,array-map,Php,Array Map,我正在尝试用PHP创建一个简单的标记云。以下是我到目前为止所做的,但它不起作用,因为我不知道我在做什么 对于数据库中的每条记录,标记存储方式如下:tag1、tag2、tag3等。。。因此,我必须首先以某种方式获取记录,然后将其分解成单独的标记并以这种方式显示。任何帮助都将不胜感激 // DB: get snippet tags $get_snippet_tags = mysqli_query($conn, "SELECT Tags FROM snippets WHERE IsPublic = 1
// 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>';
}
}
//DB:get snippet标记
$get\u snippet\u tags=mysqli\u query($conn,“从IsPublic=1限制20的代码段中选择标记”)
或死亡($dataaccess\u错误);
if(mysqli_num_rows($get_snippet_tags)>0)
{
while($row=mysqli\u fetch\u数组($get\u snippet\u标记))
{
$snippet_tags=$row['tags'];
//分解标签
$tags\u array=array\u map('string',$snippet\u tags);
$cloud\u tag=内爆(“,”,$tags\u数组);
//回声输出
回声';
}
}
它还不是数组。用于以逗号分隔。
从使用开始
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>
$result=value\u出现($thearraywhichallthetags)
这将返回一个数组,其中标记名为键,计数为值。顺便说一下,我想您需要
echo'代码>而不是回显“”代码>除非你计划在它们上面循环或其他什么
$result = value_occurs($theArrayWithAllTheTags);<br>