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

时间:2010-10-24 09:23:53

标签: php arrays count

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

例如,如果我有下表......

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

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

3 个答案:

答案 0 :(得分:9)

使用array_count_values

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

答案 1 :(得分:5)

我怀疑你可以让你的数据库为你执行所有繁重的工作。听起来你正在获得一系列标签,也许就像这样

SELECT tag FROM mytable;

但你可以这样做

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

嘿presto,标签列表及其频率!

答案 2 :(得分:0)

如果你的数组是这样的

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