تصفية الفعاليات حسب الشهر
جزء من قسم المنطق وتدفق التنفيذ في رحلة PHP على Coddy. الدرس 63 من 68.
التحدي
سهلستتلقى ثلاثة مدخلات: سلسلة JSON تمثل مصفوفة من الأحداث، وسلسلة تاريخ بتنسيق YYYY-MM-DD تمثل تاريخ اليوم، ورقم الشهر (1-12) للتصفية بناءً عليه.
المدخل الأول سيكون سلسلة JSON بهذا التنسيق: [{"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"}]
المدخل الثاني سيكون سلسلة تاريخ بهذا التنسيق: 2024-04-01
المدخل الثالث سيكون رقم الشهر بهذا التنسيق: 4
اقرأ المدخلات الثلاثة وقم بفك تشفير سلسلة JSON إلى مصفوفة أحداث. قم بتصفية الأحداث لتشمل فقط تلك التي تستوفي الشرطين التاليين:
- تاريخ الحدث أكبر من أو يساوي تاريخ اليوم (الأحداث القادمة فقط)
- يقع الحدث في الشهر المحدد
استخدم كائنات DateTime لمقارنة التواريخ واستخراج الشهر من تاريخ كل حدث باستخدام طريقة format() مع حرف التنسيق "n" (الذي يعيد الشهر كرقم بدون أصفار بادئة).
بعد التصفية، اطبع كل حدث مطابق بالتنسيق التالي:
Event in month [month]: [name] on [date] at [location]
اطبع كل حدث في سطر منفصل، بالترتيب الذي تظهر به في المصفوفة. إذا لم تطابق أي أحداث كلا المعيارين، فلا تطبع أي شيء.
تنسيق المدخلات:
- السطر الأول: سلسلة JSON تمثل مصفوفة الأحداث مع المفاتيح
nameوdateوlocation - السطر الثاني: سلسلة تاريخ بتنسيق YYYY-MM-DD تمثل تاريخ اليوم (مثال:
2024-04-01) - السطر الثالث: رقم الشهر من 1 إلى 12 (مثال:
4لشهر أبريل)
المخرجات المتوقعة: كل حدث قادم وفي الشهر المحدد، مطبوعاً في سطر منفصل بالتنسيق: Event in month [month]: [name] on [date] at [location]
جرّب بنفسك
<?php
// قراءة المدخلات
$jsonInput = trim(fgets(STDIN));
$todayDate = trim(fgets(STDIN));
$monthNumber = intval(trim(fgets(STDIN)));
// تحويل JSON إلى مصفوفة
$events = (array)json_decode($jsonInput, true);
// TODO: اكتب الكود الخاص بك أدناه
// تصفية الأحداث القادمة وفي الشهر المحدد
// استخدام كائنات DateTime لمقارنة التواريخ
// طباعة كل حدث مطابق بالتنسيق المطلوب
?>جميع دروس المنطق وتدفق التنفيذ
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جدولة الفعاليات
بيانات الفعالياتإضافة فعالية جديدةتدرّب بنفسك: مترجم PHP عبر الإنترنت