Menu
Coddy logo textTech

מערכים אסוציאטיביים דו־ממדיים

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

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

כך יוצרים מערך אסוציאטיבי דו־ממדי שבו לכל איבר יש מפתחות מחרוזת בעלי משמעות:

<?php
$students = [
    "alice" => [
        "name" => "Alice Johnson",
        "grade" => 92
    ],
    "bob" => [
        "name" => "Bob Smith", 
        "grade" => 87
    ],
    "charlie" => [
        "name" => "Charlie Brown",
        "grade" => 95
    ]
];
?>

אפשר גם לשלב בין הגישות, להשתמש באינדקסים מספריים עבור המערך הראשי ובמקביל לשמור מערכים אסוציאטיביים בתוכו:

<?php
$users = [
    ["username" => "john_doe", "email" => "john@example.com"],
    ["username" => "jane_smith", "email" => "jane@example.com"]
];
?>

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

challenge icon

אתגר

קל

תקבלו קלט אחד: מערך אסוציאטיבי דו־ממדי המייצג מלאי מוצרים בפורמט JSON. לכל מוצר יש מזהה מוצר ייחודי כמפתח, והערך הוא מערך אסוציאטיבי המכיל את ה-"name" ואת ה-"price" של המוצר. קראו את הקלט, המירו את מחרוזת JSON למערך אסוציאטיבי דו־ממדי, עברו על כל המוצרים והדפיסו את המידע של כל מוצר בפורמט: ID: [product_id] - Name: [name] - Price: $[price]

יש להדפיס כל מוצר בשורה נפרדת.

פורמט הקלט: שורה אחת המכילה אובייקט JSON המייצג את מלאי המוצרים (לדוגמה: {"P001":{"name":"Laptop","price":999.99},"P002":{"name":"Mouse","price":25.50},"P003":{"name":"Keyboard","price":75.00}})

הפלט הצפוי: כל מוצר מודפס בשורה נפרדת בפורמט ID: [product_id] - Name: [name] - Price: $[price]

נסו בעצמכם

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

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

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


?>
quiz iconבחנו את עצמכם

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

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

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