Метод 1:
Если вы хотите агрегацию 2-го уровня в визуале, вам нужно преобразовать ваш массив в другой ассоциативный массив, используя год в качестве ключа
$count_month_map = Array();
foreach ($count_month as $value) {
if(array_key_exists($value['y'], $count_month_map)) {
array_push($count_month_map[ $value['y'] ], $value);
} else {
$count_month_map[ $value['y'] ] = Array( $value );
}
}
$last_year = 0;
?>
<div data-role="main" class="ui-content">
<?php
foreach ($count_month_map as $key => $value) { ?>
<div class="card-header" id="headingOne">
<button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapseOne-<?php echo $key; ?>" aria-expanded="true" aria-controls="collapseOne"><?php echo $key; ?></button>
</div>
<?php
foreach ($value as $key1) {
?>
<div id="collapseOne-<?php echo $key1['y']; ?>" class="collapse" aria-labelledby="headingOne" data-parent="#accordionExample">
<div class="card-body">
<?php echo $monthName = date('F', mktime(0, 0, 0, $key1['m'], 10)); // March ?>
</div>
</div>
<?php } ?>
<?php
}
?>
</div>
Здесь $count_month_map
- это еще один ассоциативный массив, образованный из $count_month
Тогда внутри основного l oop вам нужно иметь второй l oop до l oop, хотя массив массива
Метод 2:
Вы можете сохранить год в вашем l oop в фиктивной переменной, скажем $curr
, в конце заключить в скобки другую фиктивную переменную $prev
затем условно вы нажимаете кнопку
$curr = '';
$prev = '';
?>
<div data-role="main" class="ui-content">
<?php
foreach ($count_month as $key) {
$curr = $key['y'];
if($prev != $curr) {
?>
<div class="card-header" id="headingOne">
<button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapseOne-<?php echo $key['y']; ?>" aria-expanded="true" aria-controls="collapseOne"><?php echo $key['y']; ?></button>
</div>
<?php
}
?>
<div id="collapseOne-<?php echo $key['y']; ?>" class="collapse" aria-labelledby="headingOne" data-parent="#accordionExample">
<div class="card-body">
<?php echo $monthName = date('F', mktime(0, 0, 0, $key['m'], 10)); // March ?>
</div>
</div>
<?php
$prev = $curr;
}
?>
</div>
Примечание: Метод 2 применим только для отсортированного столбца года, который вы уже делаете