
PHP: Tablice
Jedno- i wielowymiarowe pojemniki do przechowywania danych tego samego typu.
Deklaracja tablicy przedstawia się następująco. Nie określamy typu przechowywanych danych, jedynie stwierdzamy, że zmienna tablica będzie… tablicą 🙂
$tablica = array();
Tablica jest to struktura przechowująca dane jednakowego typu, np. tablica liczb, znaków, itp.
Każda komórka tablicy zawiera jeden element czy strukturę. Każda komórka posiada swój numer.
Numerację komórek tablicy rozpoczynamy od 0. Stąd pierwsza komórka tablicy ma numer 0, druga 1, a dziesiąty, ostatni element w 10-elementowej tablicy ma numer… 9 🙂
Możemy stworzyć tablicę, która od razu będzie coś zawierała. W przypadku liczb wygląda to następująco:
$tablica = array(1,2,3,4,5,6,7,8,9,10);
Wypiszemy teraz zawartość naszej zmiennej $tablica. Zrobimy to na dwa sposoby. Pierwszy – wykorzystując wbudowaną funkcję print_r, drugi – tworząc własne wypisanie za pomocą pętli for.
count($tablica) – ilość elementów w tablicy $tablica
print_r($tablica);
for($i=0; $i<count($tablica);$i++){ echo $tablica[$i]." "; }
Stwórzmy teraz tablicę zawierającą stringi – ciągi znaków.
$zwierzeta = array("kot", "pies", "mysz", "biedronka"); echo $zwierzeta[2];
Wypisujemy na ekran zawartość komórki o adresie 2, czyli… ?
Mysz 🙂
Stwórzmy teraz pustą tablicę, wypełnijmy ją wykorzystując mechanizm pętli, następnie wypiszmy jej zawartość na ekran:
$tab = array(); for($i=0; $i<10;$i++){ $tab[$i]=$i+1; } for($i=0; $i<count($tab);$i++){ echo $tab[$i]." "; }
Proste tablice jednowymiarowe mamy z głowy 🙂 Czas na tablice asocjacyjne.
W tablicach asocjacyjnych sami tworzymy powiązania pomiędzy adresem oraz zawartością komórki. Tu nie ma numeru komórki…
$pracownicy = array( "szef" => "Nowak", "sekretariat" => "Kowalski", "biuro" => "Barański" ); echo $pracownicy["szef"]."<br>"; foreach ($pracownicy as $stanowisko => $nazwisko) { echo "$stanowisko, $nazwisko<br>"; }
szef, Nowak
sekretariat, Kowalski
biuro, Barański
Stworzyliśmy tablicę, w której nazwa stanowiska wskazuje na nazwisko pracownika.
Wypisanie $pracownicy[“szef”] dało efekt Nowak.
Wykorzystaliśmy też pętlę foreach do wypisania całej zawartości tablicy.
Na koniec tablic jednowymiarowych mała zabawa kilkoma funkcjami:
$owoce = array("jabłko", "gruszka"); array_push($owoce, "banan", "malina"); print_r($owoce); array_pop($owoce); print_r($owoce); array_shift($owoce); print_r($owoce); array_unshift($owoce, "ananas", "cytryna"); print_r($owoce); shuffle($owoce); print_r($owoce); sort($owoce); print_r($owoce);
Array ( [0] => jabłko [1] => gruszka [2] => banan ) Array ( [0] => gruszka [1] => banan )
Array ( [0] => ananas [1] => cytryna [2] => gruszka [3] => banan )
Array ( [0] => gruszka [1] => banan [2] => ananas [3] => cytryna )
Array ( [0] => ananas [1] => banan [2] => cytryna [3] => gruszka )
array_push – dodaliśmy elementy na koniec
array_pop – zabraliśmy ostatni element
array_shift – zabraliśmy pierwszy element
array_unshift – dodaliśmy elementy na początek
shuffle() – pomieszaliśmy elementy
sort() – posortowaliśmy elementy alfabetycznie
Słów kilka o tablicach wielowymiarowych. Są to tablice, które w swoich komórkach zawierają kolejne tablice…
Przedstawienie graficzne tablicy dwuwymiarowej:
$tablica2 = array(); for($i=0; $i<10; $i++){ for($j=0; $j<10; $j++){ $tablica2[$i][$j]=0; } }
Tworzymy zatem tablicę dwuwymiarową i wypełniamy ją zerami. Wykorzystujemy zagnieżdżoną pętlę for. Wewnętrzna wypełnia kolumny poszczególnych wierszy, zewnętrzna przełącza się pomiędzy kolejnymi wierszami tablicy.
for($i=0; $i<10; $i++){ for($j=0; $j<10; $j++){ echo $tablica2[$i][$j]." "; } echo "<br>"; }
Na podobnej zasadzie wypisujemy zawartość tablicy na ekran. Po wypisaniu każdego wiersza umieszczamy znacznik <br> – przejścia do nowej linii.
Na koniec przedstawię poniżej prosty przykład wypełnienia pierwszego wiersza i pierwszej kolumny powyższej tablicy dwuwymiarowej jedynkami.
for($i=0; $i<10; $i++){ for($j=0; $j<10; $j++){ if($i == 0 || $j == 0)$tablica2[$i][$j]=1; } } for($i=0; $i<10; $i++){ for($j=0; $j<10; $j++){ echo $tablica2[$i][$j]." "; } echo "<br>"; }