PHP& MySQL:计算并排序数组中最常用的值然后打印

时间:2011-05-19 00:28:52

标签: php mysql count

我希望按照该数组中出现的值的次数来命令我的数组,然后再打印出最高的6个结果。

这就是我现在所拥有的:

        $delimiter = " ";
        $tags = array();

        $sql = mysql_query("SELECT tags FROM share WHERE site_id = $id");

        while($result = mysql_fetch_assoc($sql)) {
            $tags_new = explode($delimiter, $result['tags']);
            $tags = array_merge($tags , $tags_new);
        }

2 个答案:

答案 0 :(得分:3)

您可以使用以下查询在MySQL中执行此操作:

SELECT tags, COUNT(tags) AS tag_count
FROM share WHERE site_id = $id
GROUP BY tags
ORDER BY tag_count DESC
LIMIT 6;

这将选择计数最多的前6个标签。然后,您可以循环遍历它们,类似于您已有的PHP代码。

答案 1 :(得分:3)

嗯......你可以这样做:

    while($result = mysql_fetch_assoc($sql)) {
        $tags_new = explode($delimiter, $result['tags']);
        foreach($tags_new as $tag){
            $tags[$tag]++;
        }
    }

之后,您需要使用函数sortrsort(desc)按值排序。

    rsort($tags);

最后,你需要切片并且首先得到6:

    $high_tags = array_slice($tags, 0, 6, true);

修改:显示关键字和值:

    foreach($high_tags as $key => $value){
        echo "{$key}: {$value}";
    }

或者只是这样做:

    $high_keys = array_keys($high_tags);

    var_dump($high_keys);

再见:)