Łapka LogoŁapka Infa
🌐
INF.03

Tablice Asocjacyjne (Słowniki)

Dlaczego indeks musi być liczbą od zera? No właśnie nie musi. Przechowywanie danych pod kluczem nazwanym słowem.

Tablice Asocjacyjne

W standardowej tablicy szufladki są oznaczane liczbami: 0, 1, 2... Czasem to jednak bardzo niewygodne. Kiedy zapytasz bazę danych MySQL o zwrócenie konkretnego "Konta" z bazy, to skąd będziesz wiedzieć pod jakim numerem (0 czy 1) znajduje się "Nazwisko", a pod jakim "Hasło"?

Tablice asocjacyjne pozwalają zamiast liczb używać jako kluczy słów, czyli "Stringów".

Jak to zbudować i zjeść?

<?php
    // Zamiast liczb (0, 1) kluczami stają się "imie" i "wiek"
    $pacjent = array(
        "imie" => "Marcin",
        "nazwisko" => "Kowalski",
        "wiek" => 56
    );
    
    // Kiedy chcę wywołać wiek, odwołuję się słownie!
    echo $pacjent["wiek"]; // Zwróci 56
?>

Strzałka => (zwana operatorem asocjacji, ang. double arrow operator) to po prostu przypisanie wartości z prawej, do szufladki z kluczem z lewej strony.

Wymóg Egzaminacyjny! CKE bardzo często prosi o wylistowanie danych pobranych z MySQL na stronę WWW. MySQL zawsze rzuca tablicami asocjacyjnymi! To dlatego używa się tam metody $wiersz = mysqli_fetch_assoc($zapytanie) (gdzie asoc skrótowo pochodzi właśnie od "asocjacyjnej" tablicy!)

Co, kiedy chcę przelecieć po niej pętlą foreach i chcę nie tylko pobierać Wartość (np. Marcin), ale też jej Klucz (np. "imie")?

<?php
    foreach ($pacjent as $klucz => $wartosc) {
        echo $klucz . " to: " . $wartosc . "<br>";
    }
    // Wypluje to: 
    // imie to: Marcin
    // nazwisko to: Kowalski
    // wiek to: 56
?>