我有一个包含日期的数组,我想迭代数组以计算日期出现的次数。我希望数据显示在图表中,因此结果需要采用
形式data:[
[count, date],
[count, date],
[count, date]
]
这样每个日期的计数都在一个数组中。
我在尝试找到一个好方法时遇到了一些困难,或者是否有一种我可能忽略的方法
答案 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
功能。