Menu
Coddy logo textTech

מיון מערכים אסוציאטיביים לפי ערך

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

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

כך פועלת asort() כדי למיין לפי ערכים בסדר עולה:

<?php
$students = [
    "Alice" => 85,
    "Bob" => 92,
    "Charlie" => 78,
    "Diana" => 96
];

asort($students);
print_r($students);
// פלט: Array ( [Charlie] => 78 [Alice] => 85 [Bob] => 92 [Diana] => 96 )
?>

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

לסדר יורד, arsort() פועלת באופן דומה, אך מסדרת את הערכים מהגבוה לנמוך:

<?php
arsort($students);
print_r($students);
// פלט: Array ( [Diana] => 96 [Bob] => 92 [Alice] => 85 [Charlie] => 78 )
?>

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

challenge icon

אתגר

קל

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

פורמט הקלט: שורה אחת המכילה אובייקט JSON עם שמות העובדים כמפתחות והמשכורות כערכים (דוגמה: {"John":45000,"Sarah":52000,"Mike":38000,"Lisa":61000})

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

נסו בעצמכם

<?php
// קראו את הקלט
$input = fgets(STDIN);

// המירו את JSON למערך אסוציאטיבי
$employees = (array)json_decode($input, true);

// TODO: כתבו למטה את הקוד שלכם למיון המערך לפי שכר בסדר יורד


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

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

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

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