我有一个从MySQL数据库中获取的标签数组。显然,这些标签是字符串并存储在一个数组中,数组中有一个元素存储每个标签。为了构建我的标签云,我希望能够计算每个标签的出现次数以找到最常见的标签。
例如,如果我有下表......
tag1 tag1 hi bye gnu tux tag1 tux tux tag1 ... etc
...最常出现的标签是“tag1”我想要做的是计算该标签在阵列中出现的次数。 Max()
在这里没有帮助,因为它只喜欢数值。
答案 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
)