גישה לערכים לפי מפתח
חלק מהיחידה יסודות במסלול ה-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"].
אתגר
קלקרא שורת קלט המכילה אובייקט 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 אונליין