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

how to count values from an array and show value only once in a foreach loop

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

现在我只想输出每个月一次,以及该月出现的次数。 所以我的输出应该是这样的

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','09','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','09');
print_r(array_count_values($months));

就像 Ôrel 已经提到的:

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

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

输出将类似于:

09 2
04 1