Menu
Coddy logo textTech

גישה לערכים לפי מפתח

חלק מהיחידה יסודות במסלול ה-PHP של Coddy. שיעור 42 מתוך 71.

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

<?php
$person = [
    "name" => "Alice",
    "age" => 25,
    "city" => "Paris"
];

echo $person["name"]; // Alice
echo $person["age"];  // 25
?>

התחביר הוא $array["key"]: הציבו את המפתח כמחרוזת בתוך הסוגריים המרובעים, ו-PHP מחזירה את הערך המשויך. כך הרבה יותר קל לקרוא מאשר לזכור שהשם נמצא באינדקס 0.

אפשר גם לאחסן את הערך שהתקבל במשתנה לשימוש מאוחר יותר:

<?php
$product = [
    "title" => "Laptop",
    "price" => 999
];

$itemName = $product["title"];
echo $itemName; // Laptop
?>

המפתח חייב להתאים בדיוק, כולל אותיות גדולות וקטנות. שימוש ב־"Name" במקום "name" יגרום לשגיאה, כי PHP מתייחס אליהם כמפתחות שונים.

לפעמים נתונים מגיעים כמחרוזת JSON במקום כליטרל של מערך PHP. JSON (JavaScript Object Notation) הוא פורמט טקסט נפוץ לייצוג נתונים מובנים. לדוגמה:

$json = '{"title": "Dune", "author": "Frank Herbert", "year": 1965}';

הפונקציה המובנית json_decode() של PHP ממירה מחרוזת JSON לערך PHP. כדי לקבל מערך אסוציאטיבי, העבירו true כארגומנט השני:

<?php
$json = '{"title": "Dune", "author": "Frank Herbert", "year": 1965}';

$book = json_decode($json, true);

echo $book["title"];  // Dune
echo $book["author"]; // Frank Herbert
echo $book["year"];   // 1965
?>

לאחר קריאה ל־json_decode($json, true), התוצאה היא מערך אסוציאטיבי רגיל ואפשר לגשת לערכים שלו בדיוק כמו לכל מערך אסוציאטיבי אחר: באמצעות $array["key"].

challenge icon

אתגר

קל

קרא שורת קלט המכילה אובייקט JSON שמייצג מידע על ספר (למשל, {"title": "The Great Gatsby", "author": "F. Scott Fitzgerald", "year": 1925}).

לאחר מכן קרא שני קלטים נוספים:

  • מחרוזת key1 שמייצגת את המפתח הראשון שיש לגשת אליו
  • מחרוזת key2 שמייצגת את המפתח השני שיש לגשת אליו

כדי להמיר את מחרוזת ה-JSON למערך אסוציאטיבי, השתמש בפונקציה המובנית json_decode() עם true כארגומנט השני:
$array = json_decode($jsonString, true);
הארגומנט השני true אומר ל-PHP להחזיר מערך אסוציאטיבי במקום אובייקט. לאחר הפענוח, אפשר לגשת לערכים לפי מפתח בדיוק כמו בכל מערך אסוציאטיבי, למשל $array["title"].

צור מערך אסוציאטיבי מקלט ה-JSON, ולאחר מכן:

  1. גש לערך שמשויך ל-key1 והדפס אותו
  2. שמור את הערך שמשויך ל-key2 במשתנה שנקרא $info
  3. הדפס את הערך ששמור ב-$info

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

דוגמה:

אם הקלטים הם {"title": "The Great Gatsby", "author": "F. Scott Fitzgerald", "year": 1925}, title ו-author, הפלט צריך להיות:

The Great Gatsby
F. Scott Fitzgerald

אם הקלטים הם {"name": "Laptop", "brand": "TechCo", "price": 999}, brand ו-price, הפלט צריך להיות:

TechCo
999

נסו בעצמכם

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

// קראו את שני המפתחות
$key1 = trim(fgets(STDIN));
$key2 = trim(fgets(STDIN));

// TODO: כתבו את הקוד שלכם למטה
// 1. צרו מערך אסוציאטיבי מקלט ה-JSON באמצעות json_decode
// 2. גשו לערך המשויך ל-$key1 והדפיסו אותו
// 3. שמרו את הערך המשויך ל-$key2 במשתנה בשם $info
// 4. הדפיסו את הערך השמור ב-$info

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

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

כל השיעורים ביחידה יסודות

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