代码之家  ›  专栏  ›  技术社区  ›  Bojangles Vincent Baillet

查找数组中出现次数最多的值

  •  2
  • Bojangles Vincent Baillet  · 技术社区  · 15 年前

    我从MySQL数据库中获取了一系列标签。显然,这些标记是字符串,存储在一个数组中,数组中的一个元素存储每个标记。为了构建我的标签云,我希望能够计算每个标签的出现次数,以找到最常见的标签。

    例如,如果我有下表…

    tag1
    tag1
    hi
    bye
    gnu
    tux
    tag1
    tux
    tux
    tag1
    ...
    etc

    …最常见的标记是“tag1”,我想做的是计算该标记在数组中出现的次数。 Max() 这里没有帮助,因为它只喜欢数值。

    3 回复  |  直到 10 年前
        1
  •  9
  •   TheCodeArtist    10 年前

    使用数组\计数\值

    <?php
    $array = array(1, "hello", 1, "world", "hello");
    print_r(array_count_values($array));
    ?>
    
    
    Array
    (
        [1] => 2
        [hello] => 2
        [world] => 1
    )
    

    http://php.net/manual/en/function.array-count-values.php

    如果不需要区分大小写的版本,请使用:

    $ar = array_count_values(array_map('strtolower', $ar));
    
        2
  •  5
  •   Paul Dixon    15 年前

    我怀疑你可以让你的数据库帮你完成所有繁重的工作。听起来你有很多标签,可能是这样的

    SELECT tag FROM mytable;
    

    但你可以这样做

    SELECT tag,count(*) AS occurrences FROM mytable 
    GROUP BY tag
    ORDER BY occurences;
    

    嘿,普雷斯托,标签列表和它们的频率!

        3
  •  0
  •   Shaun Hare    15 年前

    如果你的数组是这样的

    $array = array('tag1','tag1','hi','bye','gnu','tux','tag1','tux','tux','tag1');
    
    $arrayCounting = array_count_values($array));
    

    会给你一个这样的数组

    Array
    (
        [tag1] => 4
        [hi] => 1
        [bye] => 1
        [gnu] => 1
        [tux] => 3
    )