Asocjacyjne tablice 2D
Część sekcji Logika i przepływ programu ścieżki PHP w Coddy. Lekcja 31 z 68.
Podczas pracy z tablicami 2D z użyciem indeksów liczbowych możesz także tworzyć bardziej uporządkowane dane, używając tablic asocjacyjnych zarówno na poziomie głównym, jak i w tablicach zagnieżdżonych. To podejście wykorzystuje klucze tekstowe zamiast liczb, dzięki czemu dane są znacznie bardziej opisowe i łatwiejsze do zrozumienia.
Oto jak utworzyć dwuwymiarową tablicę asocjacyjną, w której każdy element ma znaczące klucze tekstowe:
<?php
$students = [
"alice" => [
"name" => "Alice Johnson",
"grade" => 92
],
"bob" => [
"name" => "Bob Smith",
"grade" => 87
],
"charlie" => [
"name" => "Charlie Brown",
"grade" => 95
]
];
?>Możesz także łączyć podejścia, używając indeksów numerycznych dla głównej tablicy, a wewnątrz niej tablic asocjacyjnych:
<?php
$users = [
["username" => "john_doe", "email" => "john@example.com"],
["username" => "jane_smith", "email" => "jane@example.com"]
];
?>Ta struktura jest niezwykle przydatna do organizowania złożonych danych, takich jak profile użytkowników, katalogi produktów czy dowolne sytuacje, w których trzeba przechowywać wiele powiązanych właściwości każdego elementu. Klucze tekstowe sprawiają, że kod dokumentuje się sam i jest znacznie łatwiejszy w utrzymaniu niż kod wymagający zapamiętywania pozycji liczbowych.
Wyzwanie
ŁatwyOtrzymasz jedno wejście: dwuwymiarową tablicę asocjacyjną reprezentującą zapasy produktów w formacie JSON. Każdy produkt ma unikalny identyfikator produktu jako klucz, a wartością jest tablica asocjacyjna zawierająca "name" i "price" produktu. Wczytaj dane wejściowe, przekonwertuj ciąg JSON na dwuwymiarową tablicę asocjacyjną, przeiteruj po wszystkich produktach i wypisz informacje o każdym produkcie w formacie: ID: [product_id] - Name: [name] - Price: $[price]
Każdy produkt powinien być wypisany w osobnym wierszu.
Format danych wejściowych: Jeden wiersz zawierający obiekt JSON reprezentujący zapasy produktów (przykład: {"P001":{"name":"Laptop","price":999.99},"P002":{"name":"Mouse","price":25.50},"P003":{"name":"Keyboard","price":75.00}})
Oczekiwany wynik: Każdy produkt wypisany w osobnym wierszu w formacie ID: [product_id] - Name: [name] - Price: $[price]
Spróbuj swoich sił
<?php
// Odczytaj dane wejściowe JSON
$input = fgets(STDIN);
// Przekształć JSON w tablicę asocjacyjną
$inventory = (array)json_decode($input, true);
// TODO: Napisz poniżej kod, który przejdzie przez inventory i wypisze każdy produkt
?>Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ programu
1Zaawansowane funkcje
Funkcje anonimoweDomknięcia i „use”Funkcje strzałkoweFunkcje zwrotneUżywanie „call_user_func”Funkcje zmiennePrzekazywanie przez referencjęFunkcje rekurencyjnePowtórka: przegląd funkcji4Tablice wielowymiarowe
Tworzenie tablicy 2DDostęp do elementów tablicy 2DModyfikowanie elementów tablicy 2DIterowanie z użyciem zagnieżdżonych pętliAsocjacyjne tablice 2DPodsumowanie: ćwiczenie z prostą siatką2Zaawansowane operacje na tablicach
Dodawanie za pomocą 'array_push'Usuwanie za pomocą 'array_pop'Dodawanie za pomocą 'array_unshift'Usuwanie za pomocą 'array_shift'Łączenie tablic indeksowanychŁączenie tablic asocjacyjnychWyodrębnianie za pomocą 'array_slice'Wyszukiwanie wartości za pomocą 'in_array'Wyszukiwanie kluczy za pomocą 'array_search'Podsumowanie: ćwiczenie z playlistą3Sortowanie tablic
Sortowanie tablic indeksowanych rosnącoSortowanie tablic indeksowanych malejącoSortowanie tablic asocjacyjnych według wartościSortowanie tablic asocjacyjnych według kluczaSortowanie w kolejności naturalnejSortowanie niestandardowe za pomocą 'usort'Podsumowanie: sortowanie tabeli wynikówPoćwicz samodzielnie: Kompilator PHP online