如何从数组中计算值并在foreach循环中仅显示一次值

问题描述

我正在努力解决这个问题: 我有一个数组,以月为值。数组中有3个值(月):090904。因此,9月(09)一个月的2倍,4月(04)一个月的1倍。

现在我只希望每月输出一次,并且每月只输出一次。 所以我的输出应该像这样

04 1 // april 1 time
09 2 // september 2 times

我现在有这个foreach循环:

$months = array('04','09','09');
foreach($months as $month) {                
    $archive_months = array('01','02','03','04','05','06','07','08','10','11','12'); 
    $counts = array_count_values($archive_months);
    echo $month.' '.$counts[$month].'<br />';

如果我使用foreach(array_unique($months) as $month) {,则9月(09)仅出现一次,但数字为1,而不是2。

输出:

04 1
09 1

它应该是:

04 1
09 2

解决方法

仅计算月份值而不是archive_months

<?php

$months = array('04','09','09');
 
$counts = array_count_values($months);
var_dump($counts);

输出:

array(2) {
  ["04"]=>
  int(1)
  ["09"]=>
  int(2)
}
,

您不是在计算$months,而是$archive_months

arry_count_values已经在满足您的需求。无需for循环。

$months = array('04','09');
print_r(array_count_values($months));
,

就像已经提到过rel一样:

$months = array('04','09'); 
$counts = array_count_values($months);

// your foreach:
foreach($counts as $key => $val) {
    echo $key.' '.$val.'<br />';
}

输出将类似于:

09 2
04 1

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...