Raketenskripter: php: Alle "Jahre-Monate" von Startdatum bis Enddatum aufzählen

Beitrag lesen

Dein Problem ist wohl die Fallunterscheidung.

Gehe die Jahre durch. Wenn das Jahr das erste Jahr durchgezählt wird beginne mit dem Startmonat, sonst 1; Wenn das Jahr das letzte Jahr durchgezählt wird ende mit dem Endmonatmonat, sonst 12;

<?php
$firstDate = "25.12.2021";
$lastDate  = "25.11.2023";

$firstDate = strtotime( $firstDate );
$lastDate  = strtotime( $lastDate );

$firstYear  = date('Y', $firstDate );
$firstMonth = date('n', $firstDate );

$lastYear   = date('Y', $lastDate );
$lastMonth  = date('n', $lastDate );

for ( $Y = $firstYear; $Y <= $lastYear; $Y++  ) {

	$SM=1;
	$LM=12;
	
	if ( $Y == $firstYear ) {
		$SM =  $firstMonth;
	} 	
	if ( $Y == $lastYear ) {
		$LM =  $lastMonth;
	} 
	for ( $M = $SM; $M <= $LM; $M++ ) {
		echo "$Y, $M\n";
	}
}

Ausgabe:

2021, 12
2022, 1
2022, 2
2022, 3
2022, 4
2022, 5
2022, 6
2022, 7
2022, 8
2022, 9
2022, 10
2022, 11
2022, 12
2023, 1
2023, 2
2023, 3
2023, 4
2023, 5
2023, 6
2023, 7
2023, 8
2023, 9
2023, 10
2023, 11

Feinheiten, wie den Test, ob Startdatum und Enddatum a) erkannt werden und b) sich in der richtigen Weise unterscheiden, musst Du selbst nachrüsten.