Etkinlikleri Tarihe Göre Sıralama
Coddy'nin PHP Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 62 / 68.
Görev
Kolayİki girdi alacaksınız: olaylardan oluşan bir diziyi temsil eden bir JSON dizesi ve bugünün tarihini temsil eden YYYY-MM-DD biçiminde bir tarih dizesi.
İlk girdi şu biçimde 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-03-10","location":"Library"}]
İkinci girdi şu biçimde bir tarih dizesi olacaktır: 2024-04-01
Her iki girdiyi okuyun ve JSON dizesini bir olaylar dizisine dönüştürün. Olayları yalnızca yaklaşan olayları içerecek şekilde filtreleyin (tarihi bugünün tarihinden büyük veya eşit olan olaylar).
Yaklaşan olayları, usort() işlevini özel bir karşılaştırma işleviyle kullanarak tarihlerine göre artan sırada (en erken tarih önce) sıralayın. Karşılaştırma işlevi, iki olayın tarihlerini karşılaştırmalı ve sıralarını belirleyen bir değer döndürmelidir.
Sıralama işleminden sonra her yaklaşan olayı aşağıdaki biçimde yazdırın:
Upcoming: [name] on [date] at [location]
Her olayı ayrı bir satırda, en erken tarihten en geç tarihe doğru kronolojik sırayla yazdırın.
Girdi biçimi:
- İlk satır:
name,datevelocationanahtarlarına sahip olaylar dizisini temsil eden bir JSON dizesi - İkinci satır: Bugünün tarihini temsil eden YYYY-MM-DD biçiminde bir tarih dizesi (örnek:
2024-04-01)
Beklenen çıktı: Her yaklaşan olay, aşağıdaki biçimde kronolojik sırayla ayrı bir satıra yazdırılmalıdır: Upcoming: [name] on [date] at [location]
Kendin dene
<?php
// Etkinliklerin JSON dizesini oku
$eventsJson = fgets(STDIN);
$events = (array)json_decode($eventsJson, true);
// Bugünün tarihini oku
$todayDate = trim(fgets(STDIN));
// TODO: Kodunuzu aşağıya yazın
// Gelecek etkinlikleri filtrele (tarih >= bugünün tarihi)
// Gelecek etkinlikleri usort() kullanarak tarihe göre sırala
// Her bir gelecek etkinliği istenen formatta yazdır
?>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 EklemeKendi başına pratik yap: Online PHP derleyicisi