PIKADEMIA

Projekt edukacji alternatywnej

Tablice w php

Tablice to niezbędny element każdego języka programowania i służą one do przechowywania wielu informacji w jednym „pojemniku” 😉 Załóżmy, że chcielibyśmy przechować w łatwy sposób nazwy dni tygodnia. Moglibyśmy to zrobić w osobnych zmiennych, np. ($dzien_tygodnia_1, $dzien_tygodnia_2, itd. ), ale to byłby zły pomysł, ponieważ ciężko byłoby przetwarzać wszystkie te zmienne jednocześnie. Np. chcąc wyświetlić wszystkie dni tygodnia musielibyśmy się odnosić do każdej zmiennej i ją wypisać za pomocą metody echo. Aby łatwo przetwarzać, sortować informacje powiązane ze sobą, zazwyczaj sięgamy po tablice.
Należy zaznaczyć, że mamy 2 typy tablic i są to tablice indeksowane oraz tablice asocjacyjne. Na początek zajmiemy się tablicamy indeksowanymi. Zauważ, że kolejne elementy tablicy oddzielamy przecinkiem. Po ostatnim elemencie nie dodajemy przecinka!
Tablice w php możemy utworzyć na dwa sposoby, np:

<?php
    # 1 sposób z użyciem array()
    $dni_tygodnia = array("Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota", "Niedziela");

    # 2 sposób z użyciem []
    $dni_tygodnia = ["Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota", "Niedziela"];
?>

Każdy element takiej tablicy ma swój numer porządkowy, tj. nr indeksu, który zaczyna się zawsze od 0. Możemy więc powiedzieć, że Poniedziałek będzie dostępny pod numerem indeksu 0, Wtorek pod numerem 1, a Niedziela 6.
Chcąc wyświetlić drugi dzień tygodnia (Wtorek) musimy odnieść się do tablicy i podać numer indeksu, czyli w tym przypadku 1, którą wpisujemy wewnątrz nawiasu kwadratowego. Nawiasy kwadratowe powinny od dziś kojarzyć się Wam z tablicami 😉 Poniżej przykład wypisania elementów tablicy na 2 sposoby. Zwróć uwagę, że numer indeksu jest zawsze o 1 mniejszy od numeru porządkowego (pierwszy dzień tygodnia ma indeks 0). Jest tak dlatego, że my, ludzie zaczynamy liczenie od jedynki, a komputery zaczynają liczenie od zera 😉

<?php
    # utworzenie tablicy z nazwami dni tygodnia
    $dni_tygodnia = array("Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota", "Niedziela");

    # wypisanie drugiego elementu tablicy
    echo "2-gi dzień tygodnia to: ".$dni_tygodnia[1];

    # przejście do kolejnej linii
    echo "<br>";

    # wypisanie czwartego elementu tablicy
    echo "4-ty dzień tygodnia to: $dni_tygodnia[3]";
?>

Tablice z pętlą w php

Piękno tablic ujawnia się przy połączeniu ich z pętlą, dzięki której możemy działać automatycznie na wszystkich elementach tablicy. W przykładzie poniżej wypiszemy wszystkie elementy tablicy z imionami za pomoca pętli foreach:

<?php
    # utworzenie tablicy z nazwami dni tygodnia
<?php
    # utworzenie tablicy z imionami
    $imiona = array("Marysia", "Czarek", "Andrzej", "Radek", "Zenek", "Marek", "Ania");

    # wypisanie elementów tablicy za pomocą pętli foreach, jeden pod drugim
    foreach ($imiona as $imie){
        echo $imie."<br>";
    }
?>

Wypisanie elementów w kolejności alfabetycznej? No problem, wystarczy użyć specjalnej funkcji do sortowania:

<?php
    # utworzenie tablicy z imionami
    $imiona = array("Marysia", "Czarek", "Andrzej", "Radek", "Zenek", "Marek", "Ania");

    # sortowanie tablicy
    sort($imiona);

    # wypisanie elementów tablicy za pomocą pętli foreach, jeden pod drugim
    foreach ($imiona as $imie){
        echo $imie."<br>";
    }
?>

Wypisanie liczb w kolejności od największej do najmniejszej?

<?php
    # utworzenie tablicy z liczbami
    $liczby = array(23,2,556,4,12,134,89);

    # sortowanie tablicy
    rsort($liczby);

    # wypisanie elementów tablicy za pomocą pętli foreach
    foreach ($liczby as $liczba){
        echo $liczba.", ";
    }
?>

Sumowanie wartości z tablicy za pomocą pętli

<?php
    $liczby = array(23,2,556,4,12,134,89);
    $suma = 0;
    foreach($liczby as $liczba){
        $suma += $liczba;
    }
    echo $suma;

    // zamiast powyższego kodu można użyć specjalnej metody array_sum()

Za pomocą numeru indeksu oczywiście możemy nadpisać wartość wszystkich lub któregokolwiek elementu tablicy, np:

<?php
    # utworzenie tablicy z imionami
    $imiona = array("Marysia", "Czarek", "Andrzej", "Radek", "Zenek", "Marek", "Ania");
    $imiona[0] = "Heniek"; // zamienia Marysie na Heńka ;)
    foreach ($imiona as $imie){
        echo $imie."<br>";
    }
?>

Za pomocą pętli możemy przypisać do tablicy wartości losowe:

<?php
    $liczbyLosowe = array();
    for($i=0; $i<6; $i++){
        $liczba = rand(1,50);
        echo $liczba.", ";
    }
?>

Tablice asocjacyjne w php

Tablice asocjacyjne nie polegają na indeksach. Tworząc takie tablice wyznaczamy klucz (key) i wartość (value). Chcąc pobrać wartość będziemy odnosić się do klucza zapisanego w tablicy. Przypisywanie wartości do kluczy następuje za pomocą operatora =>. Prześledźmy to na przykładzie tablicy, która przechowuje informacje o ludziach:

<?php
    # utworzenie tablicy asocjacyjnej
    $czlowiek = array('pesel'=>'88120390234',
                      'imie' =>'Marian',
                      'nazwisko'=> 'Kowalski',
                      'waga' => 86,
                      'wzrost' => 182);

    # wypisanie informacji o człowieku
    foreach($czlowiek as $key => $value){
        echo "$key: $value <br>";
    }
?>

Wartości mogą być nadpisywane odnosząc się do klucza tablicy asocjacyjnej, np:

<?php
    $ludzie = array("Dawid"=>27, "Anna"=>12, "Marek"=>34);
    // nadpisywanie wartości
    $ludzie['Dawid']=36;
    // Wypisanie imion z ich wiekiem
    foreach($ludzie as $key => $value){
        echo "$key ma $value lat.<br>";
    }
?>

Tablice 2-wymiarowe w php

Tworząc tablicę 2-wymiarową możemy stworzyć matrycę wartości, która może przypominać planszę do gry w szachy. Aby odnieść się do danego pola będziemy musieli podać indeks wiersza i indeks kolumny. Możemy też tworzyć tablice stworzoną z wielu innych tablic, np:

<?php
    $ludzie = array(
        'pracownicy'=> array("Adam", "Kuba", "Jan"),
        'uczniowie'=> array("Kasia","Asia","Basia"),
        'dziadkowie'=>array("Kazik","Hania")
    );
    echo $ludzie['uczniowie'][0];  // wypisze Kasia
    echo $ludzie['pracownicy'][2]; // wypisze Jan
?>

W tym przykładzie stworzymy matrycę liczb 4×4, a następnie ją wypiszemy:

<?php
    $matrycaLiczb4x4 = array(
        array(10,11,12,13),
        array(14,15,16,17),
        array(18,19,20,21),
        array(22,23,24,25)
    );
    
    for($w=0;$w<4;$w++){
        for($k=0;$k<4;$k++){
            echo $matrycaLiczb4x4[$w][$k]." ";
        }
        echo "<br>";
    }
?>