הצגת ספירה לאחור
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-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;
?>כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1פונקציות מתקדמות
פונקציות אנונימיותסגירות ו-'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 אונליין