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"].
Wyzwanie
ŁatwyWczytaj 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
key1reprezentujący pierwszy klucz do pobrania - Ciąg znaków
key2reprezentują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:
- Pobierz i wyświetl wartość przypisaną do
key1 - Zapisz wartość przypisaną do
key2w zmiennej o nazwie$info - 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 FitzgeraldJeśli dane wejściowe to {"name": "Laptop", "brand": "TechCo", "price": 999}, brand i price, wynik powinien wyglądać następująco:
TechCo
999Spró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
?>Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
4Operatory porównania i logiczne
Operatory porównaniaRówność i tożsamośćOperatory logiczne — część 1Operatory logiczne — część 2Powtórka — prosta logika7Tablice, część 2 — asocjacyjne
Wprowadzenie do tablic asocjacyjnychDostęp do wartości za pomocą kluczaModyfikowanie wartości za pomocą kluczaDodawanie nowych par klucz-wartośćSprawdzanie, czy klucz istniejePodsumowanie — magazyn danych klucz-wartość2Zmienne i typy danych
LiczbyCiągi znaków i cudzysłowyWartości logiczneKonwencje nazewnictwaPodsumowanie — inicjalizacja zmiennychPuste zmienneŁączenie ciągów znakówPobieranie danych od użytkownikaKonwersja na inne typy5Instrukcje warunkowe
Instrukcja ifIf - elseOperator trójargumentowyOperator null coalescingInstrukcja switchPodsumowanie — podejmowanie decyzji3Podstawowe operatory
Operatory arytmetyczneOperator moduloOperator potęgowaniaPrzypisanie złożoneInkrementacja/dekrementacjaPriorytet operatorówPowtórka — proste obliczeniaOperatory łańcuchów znakówPoćwicz samodzielnie: Kompilator PHP online