Menu
CoddyTech

Dostęp do wartości za pomocą klucza

Część sekcji Podstawy ścieżki PHP w Coddy. Lekcja 42 z 71.

Skoro już wiesz, czym są tablice asocjacyjne, nauczmy się pobierać z nich wartości. Podobnie jak tablice indeksowane używają pozycji numerycznych, tablice asocjacyjne używają kluczy w nawiasach kwadratowych.

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

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

Składnia to $array["key"]: umieść klucz jako ciąg znaków w nawiasach, a PHP zwróci powiązaną wartość. Jest to znacznie czytelniejsze niż zapamiętywanie, że nazwa znajduje się pod indeksem 0.

Możesz również zapisać pobraną wartość w zmiennej, aby użyć jej później:

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

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

Klucz musi dokładnie pasować, łącznie z wielkością liter. Użycie "Name" zamiast "name" odnosi się do innego klucza; PHP wyświetla ostrzeżenie „Undefined array key”, a wyrażenie ma wartość null (nie powoduje awarii).

Czasami dane docierają jako ciąg JSON, a nie literał tablicy PHP. JSON (JavaScript Object Notation) to popularny format tekstowy służący do przedstawiania danych strukturalnych. Na przykład:

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

Wbudowana w PHP funkcja json_decode() konwertuje ciąg JSON na wartość PHP. Aby uzyskać tablicę asocjacyjną, przekaż true jako drugi argument:

<?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
?>

Po wywołaniu json_decode($json, true) wynikiem jest zwykła tablica asocjacyjna i możesz uzyskać dostęp do jej wartości dokładnie tak samo jak do każdej innej tablicy asocjacyjnej: używając $array["key"].

challenge icon

Wyzwanie

Łatwy

Wczytaj wiersz danych wejściowych zawierający obiekt JSON z informacjami o książce (np. {"title": "The Great Gatsby", "author": "F. Scott Fitzgerald", "year": 1925}).

Następnie wczytaj jeszcze dwa dane wejściowe:

  • Ciąg znaków key1 reprezentujący pierwszy klucz, do którego należy uzyskać dostęp
  • Ciąg znaków key2 reprezentujący drugi klucz, do którego należy uzyskać dostęp

Aby przekształcić ciąg JSON w tablicę asocjacyjną, użyj wbudowanej funkcji json_decode(), podając true jako drugi argument:
$array = json_decode($jsonString, true);
Drugi argument true informuje PHP, że ma zwrócić tablicę asocjacyjną zamiast obiektu. Po zdekodowaniu możesz uzyskać dostęp do wartości za pomocą klucza, tak jak w każdej tablicy asocjacyjnej, np. $array["title"].

Utwórz tablicę asocjacyjną z danych wejściowych JSON, a następnie:

  1. Uzyskaj dostęp do wartości powiązanej z key1 i ją wypisz
  2. Zapisz wartość powiązaną z key2 w zmiennej o nazwie $info
  3. Wypisz wartość zapisaną w $info

Wypisz każdy wynik w osobnym wierszu.

Przykład:

Jeśli dane wejściowe to {"title": "The Great Gatsby", "author": "F. Scott Fitzgerald", "year": 1925}, title i author, wynikiem powinno być:

The Great Gatsby
F. Scott Fitzgerald

Jeśli dane wejściowe to {"name": "Laptop", "brand": "TechCo", "price": 999}, brand i price, wynikiem powinno być:

TechCo
999

Spróbuj swoich sił

<?php
// Odczytaj dane wejściowe JSON
$jsonInput = trim(fgets(STDIN));

// Odczytaj dwa klucze
$key1 = trim(fgets(STDIN));
$key2 = trim(fgets(STDIN));

// TODO: Napisz swój kod poniżej
// 1. Utwórz tablicę asocjacyjną z danych wejściowych JSON za pomocą json_decode
// 2. Pobierz i wyświetl wartość powiązaną z $key1
// 3. Zapisz wartość powiązaną z $key2 w zmiennej o nazwie $info
// 4. Wyświetl wartość zapisaną w $info

?>
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Kompilator PHP online