Menu
Coddy logo textTech

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.

challenge icon

Görev

Kolay

İki girdi alacaksınız: bir etkinlik dizisini temsil eden bir JSON dizesi ve bugünün tarihini temsil eden YYYY-MM-DD formatında bir tarih dizesi.

İ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-03-10","location":"Library"}]

İkinci girdi şu formatta bir tarih dizesi olacaktır: 2024-04-01

Her iki girdiyi de okuyun ve JSON dizesini bir etkinlik dizisine (events array) dönüştürün. Etkinlikleri yalnızca yaklaşan etkinlikleri (tarihi bugünün tarihine eşit veya daha büyük olan etkinlikler) içerecek şekilde filtreleyin.

Yaklaşan etkinlikleri, özel bir karşılaştırma fonksiyonu ile usort() kullanarak tarihlerine göre artan sırada (en erken tarih önce gelecek şekilde) sıralayın. Karşılaştırma fonksiyonu, iki etkinliğin tarihlerini karşılaştırmalı ve sıralarını belirleyen bir değer döndürmelidir.

Sıralamadan sonra, yaklaşan her etkinliği aşağıdaki formatta yazdırın:

Upcoming: [name] on [date] at [location]

Her etkinliği, en erken tarihten en geç tarihe doğru kronolojik sırada, ayrı bir satıra yazdırın.

Girdi formatı:

  • İlk satır: name, date ve location anahtarları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)

Beklenen çıktı: Yaklaşan her etkinliğin kronolojik sırada, her biri ayrı bir satırda şu formatta yazdırılması: 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