Tablice

Szybki hosting dla WordPressa

Wprowadzenie

Tablice są specyficznym typem zmiennych – to, najprościej mówiąc, zmienne zawierające w sobie uporządkowany zbiór zmiennych. Dostęp do danych uzyskuje się podając odpowiednią liczbę w nawiasie kwadratowym, bezpośrednio po nazwie zmiennej. Liczba ta, to tak zwany indeks – kolejny numer zmiennej w tablicy. Tak samo przypisuje się wartość do tablicy. Przykład:

<?
 
    $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 najprościej dodać kolejny wpis na końcu tablicy 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, a nawet z innej tablicy czy funkcji:

<?
 
    $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).

Tablice asocjacyjne

W PHP występuje też inny rodzaj tablic, tak zwane tablice asocjacyjne. Są to tablice, w których zamiast indeksów liczbowych używa się identyfikatorów znakowych (kluczy):

<?
    
    $tablica['imie'] = 'Jan';
    $tablica['nazwisko'] = 'Kowalski';
    $tablica['adres'] = 'Polna 1';

 echo $tablica['imie'].' '.$tablica['nazwisko'].', ul. '.$tablica['adres'];

?>

W tym miejscu warto wspomnieć o alternatywnym sposobie definiowania tablic, zarówno asocjacyjnychm, jak i indeksowanych numerycznie. Służy temu funkcja array():

<?
 
     $tab = array(
        'imie' => 'Jan',
        'nazwisko' => 'Kowalski',
        'adres' => 'Polna 1'
    );

    $tab2 = array(0 => 'zero', 1 => 'jeden', 2 => 'dwa', 3 => 'trzy');

    echo $tab['nazwisko'].' '.$tab2[1];

?>

Przeglądanie tablic

Bardzo często zachodzi potrzeba wykonania operacji na wszystkich elementach tablicy. Sprawa jest prosta jeśli tablica jest zwykłą tablicą z indeksami liczbowymi i znasz ilość tych elementów:

<?
 
    $tab[] = 1;
    $tab[] = 2;
    $tab[] = 3;
    $tab[] = 4;
    $tab[] = 5;

    for ($x = 0; $x < 5; $x++) {   // Pętla wykona się 5 razy (0...4)
        echo $tab[$x];
    }

?>

Sprawa nieco się komplikuje, jeśli nie znasz ilości elementów tablicy. Wtedy z pomocą przychodzi funkcja count($nazwa_tablicy). Zwraca ona ilość elementów w tablicy podanej jako parametr. Wtedy pętla wygląda tak:

<?
 
    $tab[] = 1;
    $tab[] = 2;
    $tab[] = 3;
    $tab[] = 4;
    $tab[] = 5;

    for ($x = 0; $x < count($tab); $x++) {
        echo $tab[$x];
    }

?>

A co jeśli masz do czynienia z tablicą asocjacyjną? Nawet jeśli znasz ilość jej elementów, to pozostaje kwestia indeksowania. Wykorzystaj konstrukcję foreach():

<?
 
    $tab["imie"] = "Jan";
    $tab["nazwisko"] = "Kowalski";
    $tab["adres"] = "Polna 1";

    foreach ($tab as $element) {
        echo "$element
";
    }

    echo '
';

    foreach ($tab as $klucz => $element) {
        echo "$klucz = $element
";
    }
?>

Pętla wykonuje się dla każdego elementu tablicy. W kolejnych iteracjach bieżący element tablicy przepisywany jest do zmiennej $element. W drugim przykładzie widzisz inny wariant foreach(), pozwalający obok wartości elementu tablicy pobrać także nazwę klucza ($klucz).

Sortowanie tablic

PHP ofertuje cały zestaw funkcji służących do sortowania tablic. Są to: asort(), arsort(), ksort(), rsort(), sort(), uasort(), usort(), i uksort(). Większość funkcji (oprócz trzech ostatnich) przyjmuje jeden parametr: zmienną zawierającą tablicę do posortowania. Żadna nie zwraca wyniku.

Opis działania poszczególnych funkcji:

  • asort() – sortuje tablice asocjacyjne, zachowując przypisanie kluczy do wartości:
<?
 
  $owoce = array ("d"=>"mango", "a"=>"papaja", "b"=>"banan", "c"=>"aronia");

  asort ($owoce);
  reset ($owoce); // Funkcja ta powoduje powrót do pierwszego elementu

    while (list ($klucz, $wartosc) = each ($owoce)) {
        echo "$klucz = $wartosc\n";
    }

?>

Wynikiem działania powyższego przykładu powinno być:

c = aronia
b = banan
d = mango
a = papaja
  • arsort() – sortuje w odwrotnej kolejności tablice asocjacyjne, zachowując przypisanie kluczy do wartości. Funkcja prawie identyczna jak poprzednia, tyle że dane sortowane są “od tyłu”,
  • ksort() – sortuje tablice asocjacyjne według kluczy. Powyższy przykład po podmianie funkcji asort na ksort powinien dać taki wynik:
a = papaja
b = banan
c = aronia
d = mango
  • rsort() – sortuje zwykłe tablice (nieasocjacyjne) w odwróconej kolejności,
  • sort() – sortuje zwykłe tablice (nieasocjacyjne) w kolejności alfabetycznej,
  • uasort() – funkcja sortująca tablice asocjacyjne za pomocą zdefiniowanej przez użytkownika funkcji porównującej elementy (nazwa funkcji jest podawana za pomocą drugiego parametru),
  • usort() – funkcja sortująca zwykłe tablice za pomocą funkcji zdefiniowanej przez użytkownika,
  • uksort() – funkcja sortująca tablice asocjacyjne według klucza za pomocą funkcji zdefiniowanej przez użytkownika.

W trzech ostatnich funkcjach sortujących należy jako drugi parametr podać nazwę funkcji porównującej elementy tablicy. Funkcja taka przyjmuje 2 argumenty. Zwracane jest 0 jeśli argumenty są sobie równe, -1 jeśli pierwszy argument jest mniejszy od drugiego, a 1 jeśli jest większy.

Tworzenie stringów z tablic i odwrotnie

PHP umożliwia zamianę stringów na tablice i odwrotnie. Zamiana taka jest bardzo przydatna, jeśli zachodzi potrzeba wyciągnięcia fragmentu danych z ciągu znaków. Załóżmy, że odczytałeś z pliku z danymi linię z loga zapisanego przez licznik WWW: “12/11/2000;19:23:33;Netscape Navigator;192.168.1.1”.

Jak widać dane rozdzielone są średnikami. Do rozdzielania stringów na tablicę służy funkcja explode(). Jako pierwszy parametr przyjmuje ona znak lub dłuższy ciąg, który oddziela kolejne pola, jako drugi parametr – string do rozdzielenia.

Opcjonalnie można podać trzeci argument, który oznacza maksymalną liczbę pól – jeśli jest ich więcej, to ostatnie pole będzie zawierało wszystkie pozostałe pola. Funkcja zwraca tablicę zawierającą kolejne pola. W przykładzie z danymi z licznika wywołanie funkcji powinno wyglądać tak:

<?
 
     $dane = "12/11/2000;19:23:33;Netscape;192.168.1.1";

    $tablica = explode(";", $dane);

    foreach ($tablica as $wartosc) {
        echo "$wartosc
";
    }

?>

Istnieje także rozszerzona wersja funkcji explode: split(). Różnica polega na tym, że zamiast prostego ciągu znaków rozdzielających pola, akceptuje ona wyrażenia regularne.

Czasem potrzebne jest działanie w drugą stronę: złącznie pól tablicy w jeden ciąg, w którym pola oddzielone są znakiem (lub kilkoma znakami). Do tego celu służy funkcja implode(). Jako pierwszy parametr podawany jest ciąg za pomocą którego “sklejane” są elementy tablicy, a jako drugi – tablica do posklejania.

Zwracany jest string zawierający posklejane elementy. Jako przykład zastosowania może posłużyć zapisywanie danych o użytkowniku w aplikacji licznika odwiedzin – tablica zawiera dane o odwiedzającym, a potrzebny jest ciąg oddzielany średnikami. Wtedy wywołanie funkcji powinno wyglądać tak:

<?
 
   $tablica = array('12/11/2000', '19:23:33', 'Netscape', '192.168.1.1');

   $dane = implode(";", $tablica);

   echo $dane;

?>

Hosting stworzony dla WordPressa

Masz stronę WWW na WordPressie? My też uwielbiamy ten system dla stron internetowych. Dlatego stworzyliśmy hosting specjalnie dla jego użytkowników.


Odbierz 25 zł do wydania na empik.com

Polecaj usługi home.pl i zdobywaj za każde polecenie kupon o wartości 25zł do wydania na empik.com

Zdobądź swój kupon na 25zł Sprawdź jak

  • Czy artykuł był pomocny ?
  • Tak   Nie