סיכום: עיבוד נתונים
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-PHP של Coddy. שיעור 45 מתוך 68.
אתגר
קליתקבלו שלושה קלטים: רשימה של שמות עובדים המופרדים בפסיקים, רשימה של שעות העבודה המתאימות להם במהלך השבוע, המופרדות בפסיקים, וסף מינימלי של שעות. הקלט הראשון מכיל שמות בפורמט Alice,Bob,Charlie,Diana,Eve, הקלט השני מכיל שעות כמספרים בפורמט 45,32,50,28,40, והקלט השלישי הוא סף מינימלי של שעות כמספר (לדוגמה: 35).
קראו את שלושת הקלטים והמירו אותם למערכים המתאימים. צרו מערך אסוציאטיבי משולב שבו שמות העובדים הם המפתחות ושעות העבודה שלהם הן הערכים. לאחר מכן בצעו את הפעולות הבאות באמצעות פונקציות מערך מסדר גבוה:
- השתמשו ב-
array_filter()עם פונקציית callback מותאמת אישית כדי להשאיר רק את העובדים שעבדו לפחות את סף השעות המינימלי - השתמשו ב-
array_map()עם פונקציית callback מותאמת אישית כדי לחשב את תשלום השעות הנוספות לעובדים המסוננים (שעות נוספות הן כל שעה מעבר ל-40, ומשולמות לפי תעריף של פי 1.5 מתעריף של $25 לשעה עבור שעות רגילות) - השתמשו ב-
array_reduce()עם פונקציית callback מותאמת אישית כדי לחשב את סך התשלום עבור שעות נוספות לכל העובדים המסוננים
הדפיסו את התוצאות בפורמט הבא:
- תחילה, הדפיסו את שמו של כל עובד שעומד בדרישות ואת התשלום שלו עבור שעות נוספות, כל אחד בשורה נפרדת, בפורמט
Name: $Amount(מעוגל ל-2 ספרות אחרי הנקודה העשרונית) - לבסוף, הדפיסו את סך התשלום עבור שעות נוספות בפורמט
Total: $Amount(מעוגל ל-2 ספרות אחרי הנקודה העשרונית)
פרטי החישוב:
- שעות רגילות (עד 40): $25 לשעה
- שעות נוספות (מעבר ל-40): $37.50 לשעה (תעריף של פי 1.5)
- אם עובד עבד 40 שעות או פחות, התשלום שלו עבור שעות נוספות הוא $0.00
פורמט הקלט:
- השורה הראשונה: שמות עובדים המופרדים בפסיקים (לדוגמה:
Alice,Bob,Charlie,Diana,Eve) - השורה השנייה: שעות עבודה כמספרים, המופרדות בפסיקים (לדוגמה:
45,32,50,28,40) - השורה השלישית: סף מינימלי של שעות כמספר (לדוגמה:
35)
הפלט הצפוי: כל עובד שעומד בדרישות והתשלום שלו עבור שעות נוספות בשורה נפרדת, ולאחר מכן סך התשלום עבור שעות נוספות; כל הסכומים יהיו בפורמט עם 2 ספרות אחרי הנקודה העשרונית
נסו בעצמכם
<?php
// קראו את הקלטים
$names = explode(',', trim(fgets(STDIN)));
$hours = explode(',', trim(fgets(STDIN)));
$minHours = intval(trim(fgets(STDIN)));
// המירו את השעות למספרים שלמים
$hours = array_map('intval', $hours);
// צרו מערך אסוציאטיבי המשלב שמות ושעות
$employees = array_combine($names, $hours);
// TODO: כתבו את הקוד שלכם למטה
// 1. השתמשו ב-array_filter() כדי להשאיר עובדים שעבדו לפחות את מספר השעות המינימלי
// 2. השתמשו ב-array_map() כדי לחשב את התשלום על שעות נוספות לעובדים שסוננו
// 3. השתמשו ב-array_reduce() כדי לחשב את סך התשלום על שעות נוספות
// הציגו את התוצאות
// הדפיסו את התשלום על שעות נוספות של כל עובד שעומד בתנאים
// הדפיסו את סך התשלום על שעות נוספות
?>כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1פונקציות מתקדמות
פונקציות אנונימיותסגירות ו-'use'פונקציות חץפונקציות callbackשימוש ב-'call_user_func'פונקציות משתנותהעברה באמצעות הפניהפונקציות רקורסיביותסיכום: מגוון פונקציות4מערכים רב־ממדיים
יצירת מערך דו־ממדיגישה לאיברי מערך דו־ממדישינוי איברי מערך דו־ממדימעבר באמצעות לולאות מקוננותמערכים אסוציאטיביים דו־ממדייםסיכום: תרגיל רשת פשוטה2מניפולציות מתקדמות במערכים
הוספה באמצעות 'array_push'הסרה באמצעות 'array_pop'הוספה לתחילת המערך באמצעות 'array_unshift'הסרה מתחילת המערך באמצעות 'array_shift'מיזוג מערכים ממוספריםמיזוג מערכים אסוציאטיבייםחילוץ באמצעות 'array_slice'בדיקת ערכים באמצעות 'in_array'חיפוש מפתחות באמצעות 'array_search'סיכום: תרגיל רשימת השמעה3מיון מערכים
מיון מערכים עם אינדקסים בסדר עולהמיון מערכים עם אינדקסים בסדר יורדמיון מערכים אסוציאטיביים לפי ערךמיון מערכים אסוציאטיביים לפי מפתחמיון בסדר טבעימיון מותאם אישית באמצעות 'usort'סיכום: מיון טבלת מוביליםתרגלו בעצמכם: קומפיילר PHP אונליין