מיון מערכים אסוציאטיביים לפי ערך
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-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 )
?>שתי הפונקציות משנות ישירות את המערך המקורי, ממש כמו המקבילות שלהן למערכים עם אינדקסים. לכן הן מתאימות במיוחד לארגון נתונים כמו ציוני תלמידים, מחירי מוצרים או כל תרחיש שבו צריך למיין לפי ערך תוך שמירה על זוגות המפתח-ערך בשלמותם.
אתגר
קלתקבלו קלט אחד: מערך אסוציאטיבי של שמות עובדים ומשכורותיהם בפורמט 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);
?>השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1פונקציות מתקדמות
פונקציות אנונימיותסגירות ו-'use'פונקציות חץפונקציות callbackשימוש ב-'call_user_func'פונקציות משתנותהעברה באמצעות הפניהפונקציות רקורסיביותסיכום: מגוון פונקציות4מערכים רב־ממדיים
יצירת מערך דו־ממדיגישה לאיברי מערך דו־ממדישינוי איברי מערך דו־ממדימעבר באמצעות לולאות מקוננותמערכים אסוציאטיביים דו־ממדייםסיכום: תרגיל רשת פשוטה2מניפולציות מתקדמות במערכים
הוספה באמצעות 'array_push'הסרה באמצעות 'array_pop'הוספה לתחילת המערך באמצעות 'array_unshift'הסרה מתחילת המערך באמצעות 'array_shift'מיזוג מערכים ממוספריםמיזוג מערכים אסוציאטיבייםחילוץ באמצעות 'array_slice'בדיקת ערכים באמצעות 'in_array'חיפוש מפתחות באמצעות 'array_search'סיכום: תרגיל רשימת השמעה3מיון מערכים
מיון מערכים עם אינדקסים בסדר עולהמיון מערכים עם אינדקסים בסדר יורדמיון מערכים אסוציאטיביים לפי ערךמיון מערכים אסוציאטיביים לפי מפתחמיון בסדר טבעימיון מותאם אישית באמצעות 'usort'סיכום: מיון טבלת מוביליםתרגלו בעצמכם: קומפיילר PHP אונליין