גישה לערכים לפי מפתח
חלק מהיחידה יסודות במסלול ה-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 מציגה אזהרת "Undefined array key" והביטוי מוערך ל־null (היא לא קורסת).
לפעמים נתונים מגיעים כמחרוזת JSON במקום כליטרל של מערך PHP. JSON (סימון אובייקטים של JavaScript) הוא פורמט טקסט נפוץ לייצוג נתונים מובנים. לדוגמה:
$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"].
אתגר
קלקראו שורת קלט המכילה אובייקט 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, ואז:
- גשו לערך המשויך ל-
key1והדפיסו אותו - שמרו את הערך המשויך ל-
key2במשתנה בשם$info - הדפיסו את הערך השמור ב-
$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
?>השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
4אופרטורי השוואה ולוגיקה
אופרטורי השוואהשוויון וזהותאופרטורים לוגיים — חלק 1אופרטורים לוגיים — חלק 2סיכום — לוגיקה פשוטה7מערכים חלק 2 - אסוציאטיביים
מבוא למערכים אסוציאטיבייםגישה לערכים לפי מפתחשינוי ערכים לפי מפתחהוספת זוגות מפתח-ערך חדשיםבדיקה אם מפתח קייםסיכום - מאגר נתונים של מפתח-ערך2משתנים וסוגי נתונים
מספריםמחרוזות ומירכאותערכים בוליאנייםכללי מתן שמותסיכום – אתחול משתניםמשתנים ריקיםשרשור מחרוזותקבלת קלט מהמשתמשהמרה לסוגים שונים3אופרטורים בסיסיים
אופרטורים אריתמטייםאופרטור מודולואופרטור חזקההשמה משולבתהגדלה והקטנהקדימות אופרטוריםסיכום — חישובים פשוטיםאופרטורים למחרוזותתרגלו בעצמכם: קומפיילר PHP אונליין