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

Boj*_*les 2 php arrays count

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

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

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

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

Hai*_*vgi 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
)
Run Code Online (Sandbox Code Playgroud)

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

如果您不希望使用区分大小写的版本:

$ar = array_count_values(array_map('strtolower', $ar));
Run Code Online (Sandbox Code Playgroud)


Pau*_*xon 5

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

SELECT tag FROM mytable;
Run Code Online (Sandbox Code Playgroud)

但你可以做到这一点

SELECT tag,count(*) AS occurrences FROM mytable 
GROUP BY tag
ORDER BY occurences;
Run Code Online (Sandbox Code Playgroud)

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