Tablice

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