Php İle Haftanın Günlerini Bulmak
Merhaba arkadaşlar. Bugün, bulunduğumuz hafta dahil olmak üzere 5 haftanın günlerini tek tek bulmam gerekti. Yazdığım kodları dilediğiniz gibi kullanarak istediğiniz günleri elde edebilirsiniz. Mantığını basittir. DateTime classını bilmeniz yeterlidir.
Sadece hafta içlerini bir dizide toplamaktayım. Bunu $lastDay değişkeni cuma olarak ayarladıktan sonra döngünün başında 3 gün sonraya güncelliyorum. Böylece pazartesiyi bulmuş oluyorum ve her günü ayrı ayrı diziye giriyorum.
// Bugünü oluşturuyoruz
$today = new DateTime();
// Bulunduğumuz haftanın başını buluyoruz.
$monday = clone $today;
$monday = $monday->modify(('Sunday' == $monday->format('l')) ? 'Monday last week' : 'Monday this week');
// Oluşturacağım döngüdeki $lastDay değişkenini bör önceki haftanın cuması olarak ayarlıyorum. Böylece pazartesiye güncelleyebileceğim.
$lastDay = clone $monday;
$lastDay = $lastDay ->modify('-3 day');
// 5 haftayı belirten dizimizi oluşturuyoruz.
$dates = array(
"week1" => array(),
"week2" => array(),
"week3" => array(),
"week4" => array(),
"week5" => array()
);
// Döngümüzü başlatıyoruz. Burada $dates dizimizi foreach içerisine sokuyoruz.
foreach ($dates as $key => $date) {
// $lastDay değişkenini kullanarak haftanın ilk gününü buluyoruz.
$firstDay = clone $lastDay;
$firstDay = $firstDay->modify('+3 day');
// Bundan sonra her günü bir artırarak geri kalan 4 günü buluyoruz.
$secondDay = clone $firstDay;
$secondDay = $secondDay->modify('+1 day');
$thirdDay = clone $secondDay;
$thirdDay = $thirdDay->modify('+1 day');
$forthDay = clone $thirdDay;
$forthDay = $forthDay->modify('+1 day');
$fifthDay = clone $forthDay;
$fifthDay = $fifthDay->modify('+1 day');
// $lastDay değişkenini 5. gün yani cuma olarak ayarlıyoruz. Bu şekilde döngünün başında pazartesiyi bulabileceğiz.
$lastDay = clone $fifthDay;
// $date dizisinde ilgili haftaya günleri ekliyorum. Burada ben farklı indexler kullandım. İstediğiniz gibi düzenleyebilirsiniz.
$dates[$key] = array(
$firstDay->format('M d D') => $firstDay->format('Y-m-d'),
$secondDay->format('M d D') => $secondDay->format('Y-m-d'),
$thirdDay->format('M d D') => $thirdDay->format('Y-m-d'),
$forthDay->format('M d D') => $forthDay->format('Y-m-d'),
$fifthDay->format('M d D') => $fifthDay->format('Y-m-d'),
);
}


