Tablice są bardzo specyficznym typem zmiennych – są to, najprościej mówiąc, zmienne zawierające w sobie uporządkowany zbiór zmiennych. Do zmiennych tych uzyskuje się dostęp przez liczbę w nawiasie kwadratowym podane bezpośrednio po nazwie zmiennej – tablicy. Liczba ta to tak zwany indeks – numer kolejny zmiennej w tablicy. Tak samo przypisuje się wartość do tablicy.
Przykład 5.1. Tworzenie tablicy
<?php $tablica[0] = "Wpis numer 0"; $tablice[1] = "Wpis numer 1"; $tablica[2] = "Wpis numer 2"; echo $tablica[2]; // Wyświetlony zostanie napis "Wpis numer 2"; ?>
Aby poprostu dodać kolejny wpis na końcu tabeli wystarczy przy przypisywaniu wartości nie wpisywać indeksu do nawiasów kwadratowych. Jeśli w ten sposób dodawane są wpisy do nowej tablicy, to pierwszy wpis ma indeks 0.
Indeks można też podawać ze zmiennej, z innej tablicy czy funkcji – z dowolnego wyrażenia zwracającego wartość.
Przykład 5.2. Indeksy tablic
<?php $tab1[] = 1; $tab1[] = 0; $tab1[] = 3; $tab1[] = 2; $tab2[] = "Pierwszy"; $tab2[] = "Drugi"; $tab2[] = "Trzeci"; $tab2[] = "Czwarty"; echo $tab2[$tab1[2]]; ?>
Elementem tablicy może być każdy typ zmiennej (z innymi tablicami i obiektami włącznie).
W PHP występuje też inny rodzaj tablic, tak zwane tablice asocjacyjne (zwane też czasem haszami – hash table). Są to tablice, w których zamiast indeksów liczbowych używa się identyfikatorów znakowych (kluczy):
Bardzo często zachodzi potrzeba wykonania jakiejś operacji na wszystkich elementach tablicy. Sprawa jest prosta jeśli tablica jest zwykłą tablicą z indeksami liczbowymi i znamy ilość tych elementów:
Przykład 5.4. Przeglądanie tablic pętlą
<?php $tbl[] = 1; $tbl[] = 2; $tbl[] = 3; $tbl[] = 4; $tbl[] = 5; for( $x = 0; $x < 5; $x++ ) { // Pętla wykona się 5 razy (0...4) echo $tbl[$x]; } ?>
Sprawa się trochę komplikuje jeśli nie znamy ilości elementów tablicy. Wtedy z pomocą przychodzi funkcja count( $nazwa_tablicy ). Zwraca ona ilość elementów w tablicy podanej jako parametr.
Przykład 5.5. Pętla for i funkcja count
<?php $tbl[] = 1; $tbl[] = 2; $tbl[] = 3; $tbl[] = 4; $tbl[] = 5; for( $x = 0, $cnt = count($tbl); $x < $cnt; $x++ ){ echo $tbl[$x]; } ?>
Jeszcze trudniej jest jeśli konieczne jest przejrzenie tablicy asocjacyjnej, ale i to da się załatwić. W tym przypadku należy skorzystać z funkcji list() i each(). Nie będę omawiał ich działania – jesli kogoś to interesuje, to odsyłam do manuala PHP. Przy przechodzeniu przez tablice asocjacyjne trzeba wykorzystać pętlę while.
Przykład 5.6. Przeglądanie tablic asocjacyjnych
<?php $tablica["imie"] = "Jan"; $tablica["nazwisko"] = "Kowalski"; $tablica["adres"] = "Polna 1"; while( list($klucz, $wartosc) = each($tablica) ) echo "$klucz => $wartosc<BR>"; ?>
Jak widać, w każdej iteracji pętli mamy dostępne 2 zmienne, przyjmujące wartości kolejnych kluczy i wartości przypisanych tym kluczom.
Komentarze