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

时间:2018-03-06 07:59:02

标签: php arrays function

我有类似于以下数组的数组。但是,除了 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年计数类型1 = 3项目
计数1990年类型2 = 65项目
1991年的数量类型1 = 5项目
计数1991年类型2 = 12项目
............
............
............
............
2017年类型1 = 5项目
2017年类型2 = 10项

1 个答案:

答案 0 :(得分: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 ) 
)