מיון מערכים אסוציאטיביים לפי מפתח
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-PHP של Coddy. שיעור 23 מתוך 68.
אמנם מיון לפי ערכים שימושי, אך לפעמים צריך לארגן מערכים אסוציאטיביים לפי המפתחות שלהם. PHP מספקת את ksort() למיון המפתחות בסדר עולה ואת krsort() למיון המפתחות בסדר יורד, ושניהם שומרים על הקשרים החשובים בין המפתחות לערכים.
כך ksort() מסדרת מערך לפי סדר אלפביתי של המפתחות שלו:
<?php
$settings = [
"theme" => "dark",
"language" => "english",
"notifications" => "enabled",
"auto_save" => "on"
];
ksort($settings);
print_r($settings);
// פלט: Array ( [auto_save] => on [language] => english [notifications] => enabled [theme] => dark )
?>שימו לב שהמפתחות מסודרים כעת בסדר אלפביתי מא' עד ת', בעוד שכל שם של הגדרה נשאר מותאם כראוי לערך שלו. זה שימושי במיוחד כשרוצים להציג אפשרויות תצורה או פריטי תפריט בצורה צפויה ומאורגנת.
לסדר אלפביתי הפוך, krsort() פועלת באופן דומה, אך ממיינת מפתחות מ־Z עד A. שתי הפונקציות משנות ישירות את המערך המקורי, בדומה לפונקציות מיון אחרות ב־PHP, ולכן הן יעילות לארגון נתונים שבהם סדר המפתחות חשוב יותר מסדר הערכים.
אתגר
קלתקבלו קלט אחד: מערך אסוציאטיבי של שמות מחלקות והקצאות התקציב שלהן בפורמט JSON. קראו את הקלט, המירו את מחרוזת ה-JSON למערך, השתמשו ב-ksort() כדי למיין את המחלקות בסדר אלפביתי עולה לפי המפתחות שלהן, והדפיסו את המערך הממוין באמצעות print_r().
פורמט הקלט: שורה אחת המכילה אובייקט JSON עם שמות מחלקות כמפתחות וסכומי תקציב כערכים (לדוגמה: {"Marketing":75000,"IT":120000,"HR":65000,"Finance":95000})
הפלט הצפוי: המערך האסוציאטיבי הממוין בסדר אלפביתי עולה לפי שמות המחלקות (המפתחות), המוצג באמצעות print_r()
נסו בעצמכם
<?php
// קראו את הקלט
$input = fgets(STDIN);
// המירו את JSON למערך
$departments = (array)json_decode($input, true);
// TODO: כתבו את הקוד שלכם למטה כדי למיין את המערך לפי מפתחות
// הציגו את התוצאה
print_r($departments);
?>השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
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 אונליין