Lieber Helmut,
# fehlerhaft: #$date = date('Ymd');
das wage ich zu bezweifeln. Das Datum nimmt immer den Timestamp von „jetzt“.
Suchst Du das hier?
$months_backwards = [];
$number_of_months_including_current = 3;
for ($i = 0; $i < $number_of_months_including_current; $i++) {
	$months_backwards[$i] = date(
		"Ym",
		strtotime(
			date(
				'Ym01',
				strtotime('this month')
			). " -$i months"
		)
	);
}
print_r($months_backwards);
Array
(
    [0] => 202307
    [1] => 202306
    [2] => 202305
)
Liebe Grüße
Felix Riesterer
 nicht angemeldet
 nicht angemeldet Rolf B
 Rolf B