在PHP的多维数组中查找最常见的值

时间:2018-07-20 10:19:26

标签: php arrays

我正在尝试从多维数组中获取公共值作为数组。

这是我的数组的样子:

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最多。

我提到了这个

  

Finding common value among sub-arrays in a multidimensional array

我没有得到最少的问题是没有进入最终阵列。

  

需要的输出

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

1 个答案:

答案 0 :(得分:2)

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

最后,使用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));

Demo

输出

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