首页 > 解决方案 > 在 PHP 中查找多维数组中最常见的值

问题描述

我试图从多维数组中获取作为数组的公共值。

这是我的数组看起来像:

Array
 (
[0] => Array
    (
        [0] => 000
        [1] => 001
        [2] => 002
        [3] => 003
    )
[1] => Array
    (
        [0] => 000
        [1] => 001
        [2] => 002
    )
[2] => Array
    (
        [0] => 000
        [1] => 001
    )
[3] => Array
    (
        [0] => 000
        [1] => 001
        [2] => 002
        [3] => 003
    )
[4] => Array
    (
        [0] => 000
        [1] => 001
        [2] => 002
    )
[5] => Array
    (
        [0] => 000
        [1] => 001
    )
   )

我需要这样的结果。我的需要是在数组中找到最常见的值,这意味着在数组中值 000 来得最多,应该在输出数组中首先出现,下一个值是 001 是最多的。

我提到了这个:

在多维数组中的子数组之间找到共同值

我没有得到最起码的问题是没有进入最终数组。

需要的输出

Array
(
    [0] => 000
    [1] => 001
    [2] => 002
    [3] => 003
) 

标签: phparrays

解决方案


您可以使用 aforeach并使用数组值作为键,并在每次匹配时递增。

最后使用ksort对键进行排序并使用array_keys返回键:

$arrays = [
    ['000', '001', '002', '003'],
    ['000', '001', '002'],
    ['000', '001'],
    ['000', '001', '002', '003'],
    ['000', '001', '002'],
    ['000', '001'],
];

$result = [];

foreach ($arrays as $array) {
    foreach ($array as $a) {
        if (!array_key_exists($a, $result)) {
            $result[$a] = 1;
            continue;
        }
        $result[$a] += 1;
    }
}
ksort($result);
print_r(array_keys($result));

演示

输出

Array
(
    [0] => 000
    [1] => 001
    [2] => 002
    [3] => 003
)

推荐阅读