عرض عد تنازلي
جزء من قسم Logic & Flow في رحلة PHP على Coddy — الدرس 64 من 68.
التحدي
سهلستتلقى ثلاثة مدخلات: سلسلة JSON تمثل مصفوفة من الأحداث، وسلسلة تاريخ بتنسيق YYYY-MM-DD تمثل تاريخ اليوم، واسم الحدث لعرض العد التنازلي له.
المدخل الأول سيكون سلسلة JSON بهذا التنسيق: [{"name":"Team Meeting","date":"2024-04-15","location":"Office"},{"name":"Conference","date":"2024-05-20","location":"Convention Center"}]
المدخل الثاني سيكون سلسلة تاريخ بهذا التنسيق: 2024-04-01
المدخل الثالث سيكون اسم الحدث بهذا التنسيق: Team Meeting
اقرأ المدخلات الثلاثة وفك تشفير سلسلة JSON إلى مصفوفة أحداث. ابحث عن الحدث الذي يطابق اسم الحدث المقدم. أنشئ كائنات DateTime لكل من تاريخ اليوم وتاريخ الحدث.
احسب الفرق بين تاريخ الحدث وتاريخ اليوم. استخدم التابع diff() على كائن DateTime الخاص بتاريخ اليوم، مع تمرير كائن DateTime الخاص بالحدث كمعامل. سيعيد هذا كائن DateInterval. قم بالوصول إلى خاصية days لهذا الكائن للحصول على عدد الأيام بين التاريخين.
اطبع العد التنازلي بالتنسيق التالي:
Countdown to [event name]: [number of days] days
إذا لم يتم العثور على الحدث في المصفوفة، اطبع: Event not found
تنسيق المدخلات:
- السطر الأول: سلسلة JSON تمثل مصفوفة الأحداث مع المفاتيح
nameوdateوlocation - السطر الثاني: سلسلة تاريخ بتنسيق YYYY-MM-DD تمثل تاريخ اليوم (مثال:
2024-04-01) - السطر الثالث: اسم الحدث لعرض العد التنازلي له (مثال:
Team Meeting)
المخرجات المتوقعة: سطر واحد يظهر العد التنازلي بالتنسيق: Countdown to [event name]: [number of days] days، أو Event not found إذا لم يكن الحدث موجوداً
جرّب بنفسك
<?php
// قراءة المدخلات
$jsonString = trim(fgets(STDIN));
$todayDate = trim(fgets(STDIN));
$eventName = trim(fgets(STDIN));
// تحويل نص JSON إلى مصفوفة أحداث
$events = (array)json_decode($jsonString, true);
// TODO: اكتب كودك أدناه
// ابحث عن الحدث الذي يطابق اسم الحدث المقدم
// قم بإنشاء كائنات DateTime لتاريخ اليوم وتاريخ الحدث
// احسب الفرق باستخدام طريقة diff()
// قم بالوصول إلى خاصية الأيام (days) من كائن DateInterval
// طباعة النتيجة
echo $result;
?>جميع دروس 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جدولة الفعاليات
بيانات الفعالياتإضافة فعالية جديدة