PHP迭代数组并计算每个项目的计数

时间:2017-10-02 13:15:21

标签: php arrays

我有一个包含日期的数组,我想迭代数组以计算日期出现的次数。我希望数据显示在图表中,因此结果需要采用

形式
data:[
    [count, date],
    [count, date],
    [count, date]
]

这样每个日期的计数都在一个数组中。

我在尝试找到一个好方法时遇到了一些困难,或者是否有一种我可能忽略的方法

2 个答案:

答案 0 :(得分:4)

利用array_column()array_count_values()

使用array_column,您将获得每个子数组的第二个元素,而array_count_values将为您提供计数。

array_count_values(array_column($array, 1));
  

array_column - 返回输入中单个列的值   数组(PHP 5> = 5.5.0,PHP 7)

     

array_count_values - 计算所有   数组的值(PHP 4,PHP 5,PHP 7)

测试结果,对于如下所示的数组,如您所要求的那样

akshay@db-3325:/tmp$ cat test.php 
<?php

    $array = [
        [1, '02-10-2017'],
        [2, '02-10-2017'],
        [3, '04-10-2017'],
        [4, '10-10-2017']
    ];

    print_r(array_count_values(array_column($array, 1)));
?>

akshay@db-3325:/tmp$ php test.php 
Array
(
    [02-10-2017] => 2
    [04-10-2017] => 1
    [10-10-2017] => 1
)

答案 1 :(得分:1)

假设你的数组是这样的:

<?php 
$dates = ['02-10-2017', '02-10-2017', '01-09-2017'];
?> 

您可以像这样使用array_count_values

<?php
    print_r(array_count_values($dates));
?>

输出类似于:

Array
(
    [02-10-2017] => 2
    [01-09-2017] => 1
)

如果您希望键是计数,则可以使用array_flip功能。