Tablice jednowymiarowe
Jak w ka┐dym jΩzyku programowania w PHP r≤zniwe┐ mamy mo┐liwo╢µ tworzenia tablic. DziΩki nim mo┐emy odwo│ywaµ siΩ do element≤w tablicy za pomoc▒ indeks≤w. Jakie to ma znaczenie praktyczne, nie trzeba chyba pisaµ.
Tak jak zmienne, tablice r≤wnie┐ nie trzeba deklarowaµ. Tworzymy je przypisuj▒c warto╢µ konkretnemu indeksowi (numerujemy od zera i podajemy w nawiasach kwadratowych). Mo┐na r≤wnie┐ pozostawiµ nawiasy kwadratowe puste, a w≤wczas PHP automatycznie bΩdzie dodawaµ element do tablicy. Oto przyk│ad:
<html>
<head>
<title>Tablice jednowymiarowe</title>
</head>
<body>
<?
// to pierwszy sposob
$Tablica[0]="Karol";
$Tablica[1]="Binboy";
$Tablica[2]="[BHP]";
// mozna rowniez tak
$Tablica2[]="Karol";
$Tablica2[]="Binboy";
$Tablica2[]="[BHP]";
for ($i=0;$i<=2;$i++) echo $Tablica[$i]."<br>";
echo "<br><br>";
for ($i=0;$i<=2;$i++) echo $Tablica2[$i]."<br>";
?>
</body>
</html>
Tablice asocjacyjne
Opr≤cz indeksowania element≤w liczbami, mo┐emy r≤wnie┐ stworzyµ tablicΩ indeksowan▒ │a±cuchami. Nazywa siΩ j▒ tablic▒ asocjacyjn▒.
Tutaj, chc▒c wy╢wietliµ wszystkie elementy takiej tablicy (np. w pΩtli) musimy u┐yµ dodatkowych funkcji. Zanim je opiszΩ wspomnΩ tylko, ┐e ka┐da tablica posiada wewnΩtrzny wska╝nik. Dok│adaj▒c jakie╢ element do niej, wska╝nik siΩ przesuwa i st▒d nie podaj▒c indeksu PHP wie, gdzie ma dopisaµ dany element. Wr≤µmy jednak do wspomnianych wcze╢niej funkcji:
value current(nazwa); - zwraca warto╢µ aktualnie wskazywanego wewnΩtrznego wska╝nika tablicy, kt≤rej nazwΩ podajemy jako parametr; synoim: pos
value end(nazwa); - ta funkcja, przesuwa wewnΩtrzny wska╝nik na koniec tablicy i zwraca jego warto╢µ;
value reset(nazwa); - dzia│a podobnie do opisanej wy┐ej, tylko ustawia wska╝nik na pocz▒tek tablicy;
value key(nazwa); - zwraca indeks aktualnego elementu tablicy;
value next(nazwa); - przesuwa wska╝nik na nastΩpny element tablicy i zwraca jego warto╢µ;
value prev(nazwa); - dzia│a podobnie do poprzedniej, tylko zmniejsza wska╝nik;
A teraz przyk│ad wykorzystuj▒cy tablice asocjacyjne i kilka z opisanych funkcji:
<html>
<head>
<title>Tablice asocjacyjne</title>
</head>
<body>
<?
// tworzymy tablice
$Stolice["Polska"]="Warszawa";
$Stolice["Niemcy"]="Berlin";
$Stolice["Rosja"]="Moskwa";
// wyswietlamy wyniki
for (reset($Stolice);$klucz=key($Stolice);next($Stolice))
{
$wartosc=current($Stolice);
echo "$klucz = $wartosc <br>";
}
?>
</body>
</html>
Tablice wielowymiarowe
W PHP mamy mo┐liwo╢µ tworzenia tablic wielowymiarowych, czyli tablic o elementach typu tablicowego. U┐ytkownie takich tablic jest identyczne jak tablic jednowymiarowych. Do element≤w odwo│ujemy siΩ wpisuj▒µ w jednej parze nawias≤w kwadratowych pierwszy wymiar, w drugiej parze drugi wymiar. Takich wymiar≤w mo┐e byµ oczywi╢cie wiΩce.
$Tab[1][1]="A";
$Tab[1][2]="B";
$Tab[2][1]="C";
$Tab[2][2]="D";
Inicjalizacja tablic
Tablic nie trzeba nigdzie deklarowaµ, jednak czasami zachodzi konieczno╢µ przed ich u┐yciem wype│niµ (zainicjowaµ) je pewnymi danymi. Tak▒ mo┐liwo╢µ oczywi╢cie mamy. S│u┐y do tego s│owo: array. Przy inicjacji mo┐emy r≤wnie┐ u┐yµ operatora =>, zmieniaj▒c "indeksowanie" tablicy. Najlepiej demonstruje to poni┐szy przyk│ad:
<html>
<head>
<title>Tablice - inicjalizacja</title>
</head>
<body>
<?
$Tydzien=array("Poniedzialek","Wtorek","Sroda",
"Czwartek","Piatek","Sobota","Niedziela");
echo "Dni tygodnia:<br>";
for ($i=0;$i<=6;$i++) echo $Tydzien[$i]."<br>";
// a teraz przyklad uzycia operatora "=>"
$Imiona=array(1=>"Karol","Mariusz","Jacek","Michal");
echo "<br><br> Pierwsze imie to: ".$Imiona[1];
echo ", a drugie to ".$Imiona[2]."<br>";
// mozna rowniez w ten sposob tworzyc
// tablice asocjacyjne
$Przyklad=array("Karol"=>"Wladca i Pan!!",
"Mariusz"=>"Fajny gosc","Jacek"=>"Moj brat");
echo "Karol to: ".$Przyklad["Karol"]."<br><br>";
// a teraz tablica wielowymiarowa
$Oceny=array(
"Karol"=>array(
"polski" => "2,3,2,3",
"informatyka" => "6,5,6"),
"Mariusz"=>array(
"polski" => "4,5,4,3",
"informatyka" => "2,3,3,3")
);
echo "Oceny Karola z infy: ".$Oceny["Karol"]["informatyka"]."<br>";
echo "Oceny Mariusza z polskiego: ".$Oceny["Mariusz"]["polski"]."<br>";
?>
</body>
</html>