Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP数组_映射()_Php_Array Map - Fatal编程技术网

PHP数组_映射()

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

我正在尝试用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>';
    }
}
//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>