Menu
Coddy logo textTech

מיזוג מערכים אסוציאטיביים

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-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() למושלמת עבור מערכות הגדרות שבהן רוצים שערכי ברירת המחדל יוחלפו בהעדפות המשתמש.

לסדר הארגומנטים יש חשיבות: ערכים ממערכים שמופיעים מאוחר יותר בקריאה לפונקציה מקבלים עדיפות על פני ערכים שמופיעים קודם. התנהגות הדריסה הזו חלה רק על מפתחות מחרוזת; מפתחות מספריים תמיד מקבלים אינדקסים מחדש ברצף, בדיוק כמו במערכים עם אינדקסים.

challenge icon

אתגר

קל

יתקבלו שני קלטים: מערך תצורת ברירת מחדל ומערך העדפות משתמש, שניהם בפורמט 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);
?>
quiz iconבחנו את עצמכם

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

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

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