如何计算php中多维数组中值的出现次数

问题描述 投票:0回答:1

首先请原谅我的头衔,因为我找不到合适的头衔。请看一下阵列

Array
(
[0] => Array
    (
        [0] => 2017
        [1] => Array
            (
                [0] => December
            )

    )

[1] => Array
    (
        [0] => 2017
        [1] => Array
            (
                [0] => December
            )

    )

[2] => Array
    (
        [0] => 2017
        [1] => Array
            (
                [0] => October
            )

    )

[3] => Array
    (
        [0] => 2016
        [1] => Array
            (
                [0] => December
            )

    )

 )

您可以看到2017年重复三次,2017年12月内重复两次。现在我想从这个数组中获得一个多维数组,它将显示2017年和它的月份。

就像是

Array
(
  [2017] => 3
  [December]=> 2 // should be a nested array of 2017
  [October]=> 1 // should be a nested array of 2017
  [2016] => 1
  [December]=> 1 // should be a nested array of 2016
)

我尝试了array_count_values和一些更自定义的代码,但我设法得到了

Array
(
[2017] => 3
[2016] => 1
)

编辑:月份计数没有像这样键入。我需要知道一年中发生的年份和月份

任何帮助都非常感谢。谢谢。

php arrays
1个回答
3
投票

您可以尝试循环,然后检查年份密钥和月份密钥是否已存在

$group = [];
foreach ($array as $value) {
    $month = $value[1][0];
    if (!isset($group[$value[0]])) {
        $group[$value[0]] = array('count' => 0);
    }
    if (!isset($group[$value[0]][$month])) {
        $group[$value[0]][$month] = 0;
    }
    $group[$value[0]][$month] += 1;
    $group[$value[0]]['count'] += 1;
}

print_r($group);

如果你不一定需要计数,你可以将第一个if condition的执行更改为$group[$value[0]] = array();和行$group[$value[0]]['count'] += 1;

foreach ($array as $value) {
    $month = $value[1][0];
    if (!isset($group[$value[0]])) {
        $group[$value[0]] = array();
    }
    if (!isset($group[$value[0]][$month])) {
        $group[$value[0]][$month] = 0;
    }
    $group[$value[0]][$month] += 1;
}

print_r($group);
© www.soinside.com 2019 - 2024. All rights reserved.