数组 - 按两个索引获取计数组

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

我有类似于以下数组的数组。但是有超过2000个主要项目。

  • 内部数组的[2]是“type1”或“type2”。没有任何其他价值。
  • 内部数组的[1]是年。它可以是1990,1991 .......,2017。明年它会到2018年..........
  • 内部数组的[0]是一个ID,它与此问题无关。

    [0] => Array
        (
            [0] => 1134
            [1] => 2014
            [2] => type1
        )

    [1] => Array
        (
            [0] => 1133
            [1] => 2014
            [2] => type1
        )

    [2] => Array
        (
            [0] => 1132
            [1] => 2014
            [2] => type2
        )

    [3] => Array
        (
            [0] => 1131
            [1] => 2014
            [2] => type2
        )

    [4] => Array
        (
            [0] => 1130
            [1] => 2013
            [2] => type1
        )

我需要的

我想得到以下输出(所有按年份计算的类型)。

计数1990年type1 = 3项 计数1990年类型2 = 65项 计数1991年type1 = 5项 计数1991年type2 = 12项 ............ ............ ............ ............ 2017年类型1 = 5项 2017年类型2 = 10项

php arrays function
1个回答
1
投票

创建一个其他数组,用于存储每年的计数,如下所示:

Array(year => Array(type1 => count, type2 =>count), ...)

然后循环你的数组,并计数:

$tab = array( 
0 => Array
    (
        0 => 1134,
        1 => 2014,
        2 => 'type1'
    ),

1 => Array
    (
        0 => 1133,
        1 => 2014,
        2 => 'type1'
    ),

2 => Array
    (
        0=> 1132,
        1 => 2014,
        2 => 'type2'
    ),

3 => Array
    (
        0 => 1131,
        1 => 2014,
        2 => 'type2'
    ),

4 => Array
    (
        0 => 1130,
        1 => 2013,
        2 => 'type1'
    ));

$yeartab = array();

foreach($tab as $elt){
    $year = $elt[1];
    $type = $elt[2];
    if(array_key_exists($year, $yeartab)){
        if(array_key_exists($type,$yeartab[$year]))
            $yeartab[$year][$type]++;
        else
            $yeartab[$year][$type] = 1;
    } else {
        $yeartab[$year][$type] = 1;
    }
}

print_r($yeartab);

这将输出:

Array ( 
 [2014] => Array ( [type1] => 2 [type2] => 2 ) 
 [2013] => Array ( [type1] => 1 ) 
) 
© www.soinside.com 2019 - 2024. All rights reserved.