Menu
Coddy logo textTech

התמרה באמצעות '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() אידיאלית כשצריך לעבד נתונים בלי לאבד את הערכים המקוריים.

challenge icon

אתגר

קל

יתקבלו שני קלטים: רשימה של מחירי מוצרים המופרדים בפסיקים ואחוז הנחה. הקלט הראשון מכיל מחירים כמחרוזת בפורמט 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() כדי להחיל את ההנחה על כל מחיר


// הדפיסו כל מחיר לאחר הנחה בשורה נפרדת

?>
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: קומפיילר PHP אונליין