我想按一个数组中某个值出现多少次来对我的数组进行排序,然后只打印最高的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);
        }

最佳答案

哼...您可以这样做:

    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);


再见:)

关于php - PHP和MySQL:对数组中最流行的值进行计数和排序,然后打印,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6052535/

10-12 01:11
查看更多