PHP array_map()

Я пытаюсь создать простое облако тегов в 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>';
    }
}

person usnidorg    schedule 21.05.2011    source источник
comment
Кстати, я думаю, вы хотите echo '<a href="#">'.$could_tag.'</a>';, а не echo '<a href="#">'.$tags_array.'</a>';, если вы не планируете перебирать их или что-то в этом роде.   -  person onteria_    schedule 21.05.2011


Ответы (3)


начать с использования

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>

это вернет массив с вашим тегом в качестве ключа и вашим счетчиком в качестве значения

person Johan Olsson    schedule 21.05.2011

Это еще не массив. Используйте explode() для разделения запятыми.

person Ignacio Vazquez-Abrams    schedule 21.05.2011

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

$tagsArray = explode(",", $tags);
person George Kastrinis    schedule 21.05.2011