'array_map' עם פונקציה מותאמת אישית
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-PHP של Coddy. שיעור 40 מתוך 68.
בעוד שפונקציות מובנות כמו strtoupper עובדות היטב עם array_map(), העוצמה האמיתית מגיעה משימוש בפונקציות מותאמות אישית משלך. כך אפשר ליצור טרנספורמציות ספציפיות המותאמות בדיוק לצרכים שלך.
כדי להשתמש בפונקציה מותאמת אישית עם array_map(), פשוט העבירו את שם הפונקציה כמחרוזת בפרמטר הראשון. הפונקציה המותאמת אישית שלכם צריכה לקבל פרמטר אחד (רכיב המערך הנוכחי) ולהחזיר את הערך שעבר טרנספורמציה.
<?php
function doubleNumber($num) {
return $num * 2;
}
$numbers = [1, 2, 3, 4, 5];
$doubled = array_map("doubleNumber", $numbers);
// תוצאה: [2, 4, 6, 8, 10]
?>הגישה הזו נותנת לך שליטה מלאה על אופן העיבוד של כל איבר. אפשר לבצע חישובים מורכבים, מניפולציות על מחרוזות או כל לוגיקה אחרת בתוך הפונקציה המותאמת אישית שלך, וכך להפוך את array_map() לכלי רב־תכליתי במיוחד למשימות של שינוי נתונים.
אתגר
קליתקבלו שני קלטים: רשימת טמפרטורות במעלות צלזיוס, המופרדות בפסיקים, ויחידת יעד להמרה (או F לפרנהייט או K לקלווין). הקלט הראשון מכיל טמפרטורות כמחרוזת בפורמט 0,10,20,30,100, והקלט השני הוא תו יחיד המציין את סוג ההמרה.
קראו את שני הקלטים, המירו את הטמפרטורות המופרדות בפסיקים למערך של מספרים, צרו פונקציה מותאמת אישית שממירה טמפרטורה במעלות צלזיוס ליחידת היעד, השתמשו ב-array_map() עם הפונקציה המותאמת אישית שלכם כדי להמיר את כל הטמפרטורות, והדפיסו כל טמפרטורה מומרת בשורה נפרדת, בעיגול ל-2 ספרות אחרי הנקודה העשרונית.
נוסחאות המרה:
- מעלות צלזיוס לפרנהייט:
(C × 9/5) + 32 - מעלות צלזיוס לקלווין:
C + 273.15
פורמט הקלט:
- שורה ראשונה: טמפרטורות במעלות צלזיוס, מופרדות בפסיקים (לדוגמה:
0,10,20,30,100) - שורה שנייה: יחידת היעד להמרה — או
FאוK(לדוגמה:F)
פלט צפוי: כל טמפרטורה מומרת מודפסת בשורה נפרדת, בעיגול ל-2 ספרות אחרי הנקודה העשרונית
נסו בעצמכם
<?php
// קראו את הטמפרטורות המופרדות בפסיקים
$temperatures = fgets(STDIN);
// קראו את יחידת היעד (F או K)
$unit = trim(fgets(STDIN));
// המירו את המחרוזת המופרדת בפסיקים למערך של מספרים
$tempArray = explode(',', trim($temperatures));
// TODO: כתבו את הקוד שלכם למטה
// צרו פונקציה מותאמת אישית להמרת צלזיוס ליחידת היעד
// השתמשו ב-array_map() כדי להחיל את ההמרה על כל הטמפרטורות
// הדפיסו כל טמפרטורה שהומרה בשורה נפרדת, מעוגלת ל-2 ספרות אחרי הנקודה העשרונית
?>השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
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'סיכום: עיבוד נתוניםתרגלו בעצמכם: קומפיילר PHP אונליין