我有一个从MySQL数据库中取得的标签数组。显然,这些标签是字符串,并存储在一个数组中,数组中的一个元素存储每个标签。为了构建我的标签云,我希望能够对每个标签的出现进行计数,以找到最常见的标签。查找出现次数最多的值
举例来说,如果我有如下表...
tag1 tag1 hi bye gnu tux tag1 tux tux tag1 ... etc
...中最常出现的标签是“标签1”我想要做的是算多少倍标签出现在数组中。 Max()
在这里没有帮助,因为它只喜欢数值。
我有一个从MySQL数据库中取得的标签数组。显然,这些标签是字符串,并存储在一个数组中,数组中的一个元素存储每个标签。为了构建我的标签云,我希望能够对每个标签的出现进行计数,以找到最常见的标签。查找出现次数最多的值
举例来说,如果我有如下表...
tag1 tag1 hi bye gnu tux tag1 tux tux tag1 ... etc
...中最常出现的标签是“标签1”我想要做的是算多少倍标签出现在数组中。 Max()
在这里没有帮助,因为它只喜欢数值。
使用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));
我怀疑你可以有你的数据库执行所有繁重的您。听起来像是你得到的标签数组,也许这样
SELECT tag FROM mytable;
但你可以做到这一点
SELECT tag,count(*) AS occurrences FROM mytable
GROUP BY tag
ORDER BY occurences;
变戏法似的,标签和它们的频率列表!
如果数组是这样
$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
)
如果你不知道数组元素是什么? – 2016-06-16 06:39:47
我不确定你的意思http://stackoverflow.com/users/5294439/michael-ozoemena这种技术不限于知道值 – 2016-06-16 06:44:53
忘记了。使用这种方法我怎样才能得到数组中最常出现的元素的内容。我怎样才能得到它输出“tag1”记住我不知道“tag1”的存在。 – 2016-06-17 20:55:24
实际的标签存储在数据库中的一个CSV名单的工作,但是,是我做的得到他们的数组 - 'explode()'非常方便! (PHP) – Bojangles 2010-10-24 16:15:18
另外,我使用了标记为正确的解决方案,但是当有一个很好的重写大会的时候,我一定会使用这种方法 - 谢谢。 – Bojangles 2010-10-24 16:16:12