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