Menu
Coddy logo textTech

מיון מותאם אישית באמצעות 'usort'

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-PHP של Coddy. שיעור 25 מתוך 68.

כאשר פונקציות המיון המובנות של PHP אינן עונות על הצרכים הספציפיים שלך, הפונקציה usort() מספקת גמישות מרבית בכך שהיא מאפשרת לך להגדיר בדיוק כיצד יש להשוות ולסדר את האיברים. הפונקציה מקבלת את המערך שלך ופונקציית השוואה מותאמת אישית שאתה כותב כדי לקבוע את לוגיקת המיון.

פונקציית ההשוואה מקבלת שני איברים מהמערך וחייבת להחזיר מספר שלם: מספר שלילי אם האיבר הראשון אמור להופיע לפני השני, אפס אם הם שווים, או מספר חיובי אם האיבר הראשון אמור להופיע אחרי השני.

<?php
function compareByLength($a, $b) {
    return strlen($a) - strlen($b);
}

$words = ["elephant", "cat", "butterfly", "dog"];
usort($words, "compareByLength");
print_r($words);
// פלט: Array ( [0] => cat [1] => dog [2] => elephant [3] => butterfly )
?>

בדוגמה הזאת, פונקציית ההשוואה מחשבת את ההפרש בין אורכי המחרוזות. כאשר strlen($a) - strlen($b) מחזירה מספר שלילי, פירוש הדבר שהמחרוזת הראשונה קצרה יותר וצריכה להופיע ראשונה במערך הממויין.

כמו פונקציות מיון אחרות ב-PHP, הפונקציה usort() משנה ישירות את המערך המקורי. הפונקציה העוצמתית הזאת פותחת אפשרויות למיון לפי כל קריטריון שתוכלו לדמיין, בין אם מדובר באורך מחרוזת, בלוגיקה עסקית מותאמת אישית או בהשוואות מורכבות של כמה שדות.

challenge icon

אתגר

קל

תקבלו קלט אחד: מערך של מחירי מוצרים בפורמט JSON. קראו את הקלט, המירו את מחרוזת ה-JSON למערך, צרו פונקציית השוואה שממיינת את המחירים בסדר עולה, השתמשו ב-usort() עם פונקציית ההשוואה שלכם כדי למיין את המערך, והדפיסו את המערך הממויין באמצעות print_r().

פורמט הקלט: שורה אחת המכילה מערך JSON של מספרים (לדוגמה: [29.99,15.50,42.00,8.75,33.25])

הפלט הצפוי: המערך הממויין בסדר עולה לפי המחיר, מוצג באמצעות print_r()

נסו בעצמכם

<?php
// קרא את הקלט
$input = fgets(STDIN);
$prices = json_decode($input, true);

// TODO: צור פונקציית השוואה והשתמש ב-usort() כדי למיין את המערך

// הדפס את המערך הממוין
print_r($prices);
?>
quiz iconבחנו את עצמכם

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

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

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