מיזוג מערכים אסוציאטיביים
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-PHP של Coddy. שיעור 15 מתוך 68.
בעוד ש־array_merge() פועלת בצורה חלקה עם מערכים מאונדקסים, ההתנהגות שלה משתנה באופן משמעותי בעבודה עם מערכים אסוציאטיביים. ההבדל המרכזי הוא האופן שבו היא מטפלת במפתחות מחרוזת כפולים בין המערכים שממוזגים.
בעת מיזוג מערכים אסוציאטיביים, אם לשני המערכים יש אותו מפתח מחרוזת, הערך מהמערך המאוחר יותר יחליף את הערך מהמערך המוקדם יותר:
<?php
$defaults = ["theme" => "light", "language" => "english", "notifications" => true];
$userSettings = ["theme" => "dark", "notifications" => false];
$finalConfig = array_merge($defaults, $userSettings);
print_r($finalConfig);
// פלט: Array ( [theme] => dark [language] => english [notifications] => false )
?>שימו לב כיצד "theme" השתנה מ-"light" ל-"dark" ו-"notifications" השתנה מ-true ל-false, בעוד ש-"language" נשאר "english" מכיוון שלא הוחלף. ההתנהגות הזו הופכת את array_merge() למושלמת עבור מערכות הגדרות שבהן רוצים שערכי ברירת המחדל יוחלפו בהעדפות המשתמש.
לסדר הארגומנטים יש חשיבות: ערכים ממערכים שמופיעים מאוחר יותר בקריאה לפונקציה מקבלים עדיפות על פני ערכים שמופיעים קודם. התנהגות הדריסה הזו חלה רק על מפתחות מחרוזת; מפתחות מספריים תמיד מקבלים אינדקסים מחדש ברצף, בדיוק כמו במערכים עם אינדקסים.
אתגר
קליתקבלו שני קלטים: מערך תצורת ברירת מחדל ומערך העדפות משתמש, שניהם בפורמט JSON. יש לקרוא את שני הקלטים, להמיר כל מחרוזת JSON למערך אסוציאטיבי, להשתמש ב־array_merge() כדי למזג אותם (כאשר העדפות המשתמש גוברות על ערכי ברירת המחדל), ולהדפיס את התצורה הממוזגת באמצעות print_r().
פורמט הקלט: שתי שורות — כל שורה מכילה אובייקט JSON שמייצג מערך אסוציאטיבי (לדוגמה: {"theme":"light","language":"english"})
הפלט הצפוי: מערך התצורה הממוזג, שבו העדפות המשתמש גוברות על ערכי ברירת המחדל, ומוצג באמצעות print_r()
נסו בעצמכם
<?php
// קראו את שני קלטי ה-JSON
$defaultConfig = fgets(STDIN);
$userPreferences = fgets(STDIN);
// המירו מחרוזות JSON למערכים אסוציאטיביים
$defaultArray = (array)json_decode($defaultConfig, true);
$userArray = (array)json_decode($userPreferences, true);
// TODO: כתבו למטה את הקוד שלכם למיזוג המערכים
// הדפיסו את התצורה הממוזגת
print_r($mergedConfig);
?>השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
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 אונליין