Etkinlikleri Aya Göre Filtreleme
Coddy'nin PHP Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 63 / 68.
Görev
KolayÜç girdi alacaksınız: etkinlik dizisini temsil eden bir JSON dizesi, bugünün tarihini temsil eden YYYY-MM-DD formatında bir tarih dizesi ve filtreleme yapmak için bir ay numarası (1-12).
İlk girdi şu formatta bir JSON dizesi olacaktır: [{"name":"Team Meeting","date":"2024-04-15","location":"Office"},{"name":"Conference","date":"2024-05-20","location":"Convention Center"},{"name":"Workshop","date":"2024-04-25","location":"Library"}]
İkinci girdi şu formatta bir tarih dizesi olacaktır: 2024-04-01
Üçüncü girdi şu formatta bir ay numarası olacaktır: 4
Her üç girdiyi de okuyun ve JSON dizesini bir etkinlik dizisine (events array) dönüştürün. Etkinlikleri şu iki koşulu da karşılayacak şekilde filtreleyin:
- Etkinlik tarihi, bugünün tarihine eşit veya daha büyük olmalıdır (yalnızca yaklaşan etkinlikler)
- Etkinlik belirtilen ayda gerçekleşmelidir
Tarihleri karşılaştırmak için DateTime nesnelerini kullanın ve her etkinliğin tarihinden ayı, "n" format karakterini (ayı başında sıfır olmadan bir sayı olarak döndürür) kullanan format() yöntemiyle çıkarın.
Filtrelemeden sonra, eşleşen her etkinliği aşağıdaki formatta yazdırın:
Event in month [month]: [name] on [date] at [location]
Her etkinliği, dizide göründükleri sırayla ayrı bir satıra yazdırın. Her iki kritere de uyan hiçbir etkinlik yoksa hiçbir şey yazdırmayın.
Girdi formatı:
- Birinci satır:
name,datevelocationanahtarlarını içeren etkinlik dizisini temsil eden bir JSON dizesi - İkinci satır: Bugünün tarihini temsil eden YYYY-MM-DD formatında bir tarih dizesi (örnek:
2024-04-01) - Üçüncü satır: 1 ile 12 arasında bir ay numarası (örnek: Nisan için
4)
Beklenen çıktı: Hem yaklaşan hem de belirtilen ayda olan her etkinlik, şu formatta ayrı bir satıra yazdırılır: Event in month [month]: [name] on [date] at [location]
Kendin dene
<?php
// Girdileri oku
$jsonInput = trim(fgets(STDIN));
$todayDate = trim(fgets(STDIN));
$monthNumber = intval(trim(fgets(STDIN)));
// JSON'u diziye dönüştür
$events = (array)json_decode($jsonInput, true);
// TODO: Kodunuzu aşağıya yazın
// Gelecek olan ve belirtilen ayda gerçekleşen etkinlikleri filtreleyin
// Tarihleri karşılaştırmak için DateTime nesnelerini kullanın
// Eşleşen her etkinliği gerekli formatta yazdırın
?>Mantık ve Akış bölümündeki tüm dersler
1İleri Seviye Fonksiyonlar
Anonim FonksiyonlarClosure'lar ve 'use'Ok Fonksiyonları (Arrow Functions)Geri Çağırma (Callback) Fonksiyonları'call_user_func' KullanımıDeğişken FonksiyonlarReferans ile Değer AktarımıÖz Yinelemeli (Recursive) FonksiyonlarÖzet: Fonksiyon Karması4Çok Boyutlu Diziler
2 Boyutlu Dizi Oluşturma2 Boyutlu Dizi Elemanlarına Erişme2 Boyutlu Dizi Elemanlarını Değiştirmeİç İçe Döngülerle Yineleme2 Boyutlu İlişkisel DizilerÖzet: Basit Izgara Egzersizi2İleri Düzey Dizi İşlemleri
'array_push' ile Ekleme'array_pop' ile Silme'array_unshift' ile Ekleme'array_shift' ile Silmeİndisli Dizileri Birleştirmeİlişkisel Dizileri Birleştirme'array_slice' ile Kesit Alma'in_array' ile Değer Kontrolü'array_search' ile Anahtar AramaÖzet: Çalma Listesi Alıştırması3Dizileri Sıralama
İndisli Dizileri Artan Sırada Sıralamaİndisli Dizileri Azalan Sırada Sıralamaİlişkisel Dizileri Değere Göre Sıralamaİlişkisel Dizileri Anahtara Göre SıralamaDoğal Sıralama (Natural Order)'usort' ile Özel SıralamaÖzet: Liderlik Tablosu Sıralama6Yüksek Mertebeden Dizi Fonksiyonları
'array_map' ile DönüştürmeÖzel Fonksiyon ile 'array_map''array_filter' ile FiltrelemeÖzel Fonksiyon ile 'array_filter''array_reduce' ile İndirgeme'array_walk' ile GezinmeÖzet: Veri İşleme9Etkinlik Planlayıcı
Etkinlik VerisiYeni Etkinlik Ekleme