فرز الفعاليات حسب التاريخ
جزء من قسم Logic & Flow في رحلة PHP على Coddy — الدرس 62 من 68.
التحدي
سهلستتلقى مدخلين: سلسلة JSON تمثل مصفوفة من الأحداث، وسلسلة تاريخ بتنسيق YYYY-MM-DD تمثل تاريخ اليوم.
المدخل الأول سيكون سلسلة JSON بهذا التنسيق: [{"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"}]
المدخل الثاني سيكون سلسلة تاريخ بهذا التنسيق: 2024-04-01
اقرأ كلا المدخلين وقم بفك تشفير سلسلة JSON إلى مصفوفة أحداث. قم بتصفية الأحداث لتشمل فقط الأحداث القادمة (الأحداث التي يكون تاريخها أكبر من أو يساوي تاريخ اليوم).
قم بفرز الأحداث القادمة حسب تاريخها بترتيب تصاعدي (التاريخ الأقدم أولاً) باستخدام usort() مع دالة مقارنة مخصصة. يجب أن تقارن دالة المقارنة بين تواريخ حدثين وتعيد قيمة تحدد ترتيبهما.
بعد الفرز، اطبع كل حدث قادم بالتنسيق التالي:
Upcoming: [name] on [date] at [location]
اطبع كل حدث في سطر منفصل، بترتيب زمني من الأقدم إلى الأحدث.
تنسيق المدخلات:
- السطر الأول: سلسلة JSON تمثل مصفوفة الأحداث مع المفاتيح
name، وdate، وlocation - السطر الثاني: سلسلة تاريخ بتنسيق YYYY-MM-DD تمثل تاريخ اليوم (مثال:
2024-04-01)
المخرجات المتوقعة: طباعة كل حدث قادم في سطر منفصل بترتيب زمني بالتنسيق: Upcoming: [name] on [date] at [location]
جرّب بنفسك
<?php
// قراءة سلسلة JSON للأحداث
$eventsJson = fgets(STDIN);
$events = (array)json_decode($eventsJson, true);
// قراءة تاريخ اليوم
$todayDate = trim(fgets(STDIN));
// TODO: اكتب كودك أدناه
// تصفية الأحداث القادمة (التاريخ >= تاريخ اليوم)
// فرز الأحداث القادمة حسب التاريخ باستخدام usort()
// طباعة كل حدث قادم بالتنسيق المطلوب
?>جميع دروس Logic & Flow
1الدوال المتقدمة
الدوال المجهولةالـ Closures وكلمة 'use'دوال السهمدوال الـ Callbackاستخدام 'call_user_func'دوال المتغيراتالتمرير بالمرجعالدوال العوديةمراجعة: مزيج الدوال4المصفوفات متعددة الأبعاد
إنشاء مصفوفة ثنائية الأبعادالوصول إلى عناصر المصفوفة ثنائية الأبعادتعديل عناصر المصفوفة ثنائية الأبعادالتكرار باستخدام الحلقات المتداخلةالمصفوفات الترابطية ثنائية الأبعادمراجعة: تمرين الشبكة البسيطة2معالجة المصفوفات المتقدمة
الإضافة باستخدام 'array_push'الحذف باستخدام 'array_pop'الإضافة باستخدام 'array_unshift'الحذف باستخدام 'array_shift'دمج المصفوفات المفهرسةدمج المصفوفات الترابطيةالاستخراج باستخدام 'array_slice'القيم باستخدام 'in_array'المفاتيح باستخدام 'array_search'مراجعة: تمرين قائمة التشغيل3ترتيب المصفوفات
ترتيب المصفوفات المفهرسة تصاعدياًترتيب المصفوفات المفهرسة تنازلياًترتيب المصفوفات الترابطية حسب القيمةترتيب المصفوفات الترابطية حسب المفتاحالترتيب بالترتيب الطبيعيالترتيب المخصص باستخدام 'usort'مراجعة: ترتيب لوحة المتصدرين6دوال المصفوفات من الرتبة العليا
التحويل باستخدام 'array_map''array_map' مع دالة مخصصةالتصفية باستخدام 'array_filter''array_filter' مع دالة مخصصةالاختزال باستخدام 'array_reduce'المرور عبر العناصر باستخدام 'array_walk'ملخص: معالجة البيانات9جدولة الفعاليات
بيانات الفعالياتإضافة فعالية جديدة