Самый простой способ - получить метку времени, соответствующую сегодняшнему дню, используя функцию time()
; и 7 раз удаляют 1 день для этой отметки времени, каждый из которых повторяет дату, соответствующую этой отметке времени:
$timestamp = time();
for ($i = 0 ; $i < 7 ; $i++) {
echo date('Y-m-d', $timestamp) . '<br />';
$timestamp -= 24 * 3600;
}
Что даст вам этот вывод:
2010-02-25
2010-02-24
2010-02-23
2010-02-22
2010-02-21
2010-02-20
2010-02-19
Поскольку отметка времени представляет собой только количество секунд с момента 1970-01-01
, вычитание одного дня из отметки времени означает вычитание 24*3600
секунд.
Редактировать после комментариев:
Для изменений месяца и недели это все равно будет работать: один день все еще равен 24 * 3600 секундам.
Например, если вы тестируете использование этой строки вместо первой, которую я разместил в моем первом примере:
$timestamp = strtotime('2010-02-03');
Вы получите этот вывод:
2010-02-03
2010-02-02
2010-02-01
2010-01-31
2010-01-30
2010-01-29
2010-01-28
Изменился месяц штрафа.
Для високосных лет, если я тестирую, используя это:
$timestamp = strtotime('2008-03-03');
Я получаю:
2008-03-03
2008-03-02
2008-03-01
2008-02-29
2008-02-28
2008-02-27
2008-02-26
Что выглядит хорошо, поскольку в феврале 2008 года было 29 дней.
А если я проверю с:
$timestamp = strtotime('2009-03-03');
Я получаю:
2009-03-03
2009-03-02
2009-03-01
2009-02-28
2009-02-27
2009-02-26
2009-02-25
Что тоже хорошо выглядит.