从数据库中获取列表,然后在每个列表中获取最常用的标签

时间:2014-01-05 23:03:32

标签: php

所以,假设我有一个数据库,用户可以在其中添加PHP变成逗号分隔列表的“标签”。用户放入'橙子,辣椒,饼干洋葱葡萄',然后变成'橙子,辣椒,饼干,洋葱,葡萄'。现在,我很确定这很容易,我不需要帮助。但现在这些“标签”列在SQL数据库中。

$individuallist = $databaserow['database_list'];
$arrayoflist = explode(',', $individuallist );

foreach($arrayoflist as $individualtag) {

//Display Tags

}

所以,好的,我可以抓住这些标签并将它们用于与之相关的特定项目。我可以将列表转换为数组并预先显示每个标签。

但是,我需要获取数据库中的所有列表并将它们一起添加。例如:

while($databaserow = mysql_fetch_assoc($databaseresult)) {

$database_array[] = $databaserow ['database_list'];

}

因此这两个示例列表将合并为一个数组

// The Two Lists
// 'orange,peppers,biscuits,onions,grapes'
// 'peppers,orange,market,turkey,juice'

$database_full_list = implode(',', $database_array);

// The Full List
// 'orange,peppers,biscuits,onions,grapes,peppers,orange,market,turkey,juice'

现在我已经拥有完整的标签列表,我需要指望哪些标签是Top 30.这个想法是,随着更多标签被添加到数据库中,前30个标签将按照如何排列很多都有。

橙色(2)

辣椒(2)

Bisquits(1)

市场(1)

我不知道如何对这部分编码。

1 个答案:

答案 0 :(得分:0)

$split_tags = explode(',', $database_full_list);
$count_tags = array();

foreach($split_tags as $tag) {
    if(!array_key_exists($tag, $count_tags))
        $count_tags[$tag] = 0;

    $count_tags[$tag]++;
}

asort($count_tags);

foreach(array_reverse($count_tags) as $tag => $count)
    echo "$tag ($count)<br/>";