התמרה באמצעות 'array_map'
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-PHP של Coddy. שיעור 39 מתוך 68.
הפונקציה array_map() היא כלי רב־עוצמה שמשנה כל איבר במערך באמצעות החלת פונקציית callback על כל אחד מהם. בניגוד לפונקציות שמשנות את המערך המקורי, array_map() יוצרת ומחזירה מערך חדש לחלוטין עם הערכים שעברו שינוי.
התחביר הבסיסי דורש שני פרמטרים: ראשית, פונקציית ה־callback שברצונך להחיל, ושנית, המערך שברצונך לשנות. ב־PHP יש פונקציות מובנות רבות שעובדות היטב כ־callback עם array_map().
<?php
$names = ["alice", "bob", "charlie"];
$uppercaseNames = array_map("strtoupper", $names);
// תוצאה: ["ALICE", "BOB", "CHARLIE"]
?>בדוגמה הזו, strtoupper מוחלת על כל איבר במערך $names. המערך המקורי נשאר ללא שינוי, בעוד ש-$uppercaseNames מכיל את התוצאות שעברו טרנספורמציה. לכן array_map() אידיאלית כשצריך לעבד נתונים בלי לאבד את הערכים המקוריים.
אתגר
קליתקבלו שני קלטים: רשימה של מחירי מוצרים המופרדים בפסיקים ואחוז הנחה. הקלט הראשון מכיל מחירים כמחרוזת בפורמט 19.99,25.50,12.75,8.00, והקלט השני הוא אחוז ההנחה כמספר (לדוגמה: 15).
קראו את שני הקלטים, המירו את המחירים המופרדים בפסיקים למערך של מספרים, החילו את אחוז ההנחה על כל מחיר באמצעות array_map(), יחד עם הפונקציה המובנית floatval להמרה ועם חישוב ההנחה, והדפיסו כל מחיר לאחר ההנחה בשורה נפרדת, מעוגל ל-2 ספרות אחרי הנקודה העשרונית.
לחישוב המחיר לאחר ההנחה: הכפילו את המחיר המקורי ב-(100 - discount) / 100.
פורמט הקלט:
- שורה ראשונה: מחירי מוצרים המופרדים בפסיקים (לדוגמה:
19.99,25.50,12.75,8.00) - שורה שנייה: אחוז ההנחה כמספר (לדוגמה:
15)
הפלט הצפוי: כל מחיר לאחר ההנחה מודפס בשורה נפרדת, מעוגל ל-2 ספרות אחרי הנקודה העשרונית (לדוגמה: 16.99, 21.68, 10.84, 6.80)
נסו בעצמכם
<?php
// קראו את הקלט
$prices_input = trim(fgets(STDIN));
$discount = floatval(fgets(STDIN));
// המירו את המחירים המופרדים בפסיקים למערך
$prices = explode(',', $prices_input);
// TODO: כתבו את הקוד שלכם למטה
// השתמשו ב-array_map() כדי להחיל את ההנחה על כל מחיר
// הדפיסו כל מחיר לאחר הנחה בשורה נפרדת
?>השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
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 אונליין