Menu
Coddy logo textTech

Dostęp do wartości za pomocą klucza

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

Teraz, gdy wiesz już, czym są tablice asocjacyjne, nauczmy się pobierać z nich wartości. Podobnie jak tablice indeksowane korzystają z pozycji liczbowych, 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 kwadratowych, 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ć, z uwzględnieniem wielkości liter. Użycie "Name" zamiast "name" spowodowałoby błąd, ponieważ PHP traktuje je jako różne klucze.

Czasami dane są przesyłane jako ciąg JSON, a nie jako 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 funkcja PHP 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, a jej wartości możesz odczytywać dokładnie tak samo jak wartości każdej innej tablicy asocjacyjnej: za pomocą $array["key"].

challenge icon

Wyzwanie

Łatwy

Wczytaj wiersz danych wejściowych zawierający obiekt JSON reprezentujący informacje 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 pobrania
  • Ciąg znaków key2 reprezentujący drugi klucz do pobrania

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

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

  1. Pobierz i wyświetl wartość przypisaną do key1
  2. Zapisz wartość przypisaną do key2 w zmiennej o nazwie $info
  3. Wyświetl wartość zapisaną w $info

Wyświetl 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, wynik powinien wyglądać następująco:

The Great Gatsby
F. Scott Fitzgerald

Jeśli dane wejściowe to {"name": "Laptop", "brand": "TechCo", "price": 999}, brand i price, wynik powinien wyglądać następująco:

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. Uzyskaj dostęp do wartości powiązanej z $key1 i ją wypisz
// 3. Zapisz wartość powiązaną z $key2 w zmiennej o nazwie $info
// 4. Wypisz 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