Tablice i pętle

Z pierwszej części wiemy już jak pobierać dane od użytkownika, w najprostszy ze sposobów je przetworzyć i wyświetlić wynik. Bardzo często mamy jakieś zestawy danych, które trzeba wyświetlić na przykład w postaci listy. Do przechowywania zestawów danych najpopularniejszą metodą są tablice zaś do wyświetlania pętle.

Tablice

Na ogół wykorzystujemy dwa rodzaje tablic, zwykłe i assocjacyjne. Aby stworzyć najprostszą z możliwych tablic wystarczy linijka kodu taka jak ta poniżej.

$array = ["orange","yellow","green","blue","black"];

W powyższym kodzie do zmiennej $array przypisujemy tablicę zawierającą pięć kolorów. Teraz aby wyświetlić drugi kolor z tablicy (czyli „yellow”) należy odnieść się do indexu nr 1 tablicy ponieważ indexy tablic są liczone od zera.

echo $array[1];

Drugim rodzajem tablic są moje ulubione Tablice assocjacyjne, w których sami ustalamy klucze. Aby stworzyć tablicę assocjacyjną należy wykonać kod podobny do tego poniżej:

$assoc_array = [
    'klucz1' => 'Wartość 1',
    'klucz2' => 'Wartość 2',
    'klucz3' => 'Wartość 3'
];

Jak widać w powyższym przykładzie w tablicy assocjacyjnej określamy kolejne elementy przez klucz strzałka wartość. Analogicznie jak w zwykłej tablicy aby wyświetlić dowolną wartość wpisujemy po „echo” nazwę zmiennej z tablicą i w nawiasach kwadratowych index, który wcześniej ustaliliśmy.

echo $assoc_array['klucz2'];

Zastosowanie powyższego kodu powinno poskutkować wyświetleniem napisu „Wartość 2”.

Oczywiście stosunkowo rzadko wpisujemy indeksy „z palca”, programując przeważnie generujemy dużo rzeczy dynamicznie, więc indeksy przekazujemy za pomocą zmiennej. Aby powtórzyć powyższy przykład wykorzystania tablicy assocjacyjnej z użyciem zmiennej można zastosować następujący kod.

$key = 'klucz2';
echo $assoc_array[$key];

Pętla for

Mając już podstawową wiedzę o tablicach można przejść do pętli, dzięki nim możemy w prosty sposób wypisać wszystkie elementy tablic. Pętle są szczególnie przydatne kiedy tablice generujemy dynamicznie, na przykład pobierając dane z bazy.

Pierwszym rodzajem pętli jest pętla „FOR”. Dzięki tej pętli możemy w prosty sposób wykonać określoną ilość razy jakąś czynność. Na przykład wyświetlić kilka liczb.

for($i = 1; $i < 10; $i++){
    echo $i . "<br>";
}

W powyższym przykładzie najpierw określamy że jest to pętla for, następnie w nawiasach okrągłych kolejno ustawiamy zmienną $i na wartość „1” określamy warunek do kiedy pętla ma się wykonywać, czyli dopóki zmienna $i jest mniejsza od 10, i po trzecie określamy że po każdym wykonaniu pętli wartość $i będzie się zwiększała o 1. Po zdefiniowaniu parametrów pętli otwieramy blok kodu, który będzie się wykonywał, dopóki określony warunek będzie spełniony. Czyli będziemy wyświetlać kolejne liczby, dopóki nie dojdą do 10.

Możemy na przykład wykorzystać tę pętlę do wyświetlenia okreslonej ilości elementów tablicy. Jednak w tym przypadku aby nie otrzymać błędów, musimy być pewni że te elementy są w tablicy lub po prostu sprawdzić czy te elementy są w tablicy.

for($i = 1; $i < 6; $i++){
    if(isset($array[$i])){
        echo $array[$i] . "<br>";
    }
}

Jeśli wykorzystaliśmy tablicę z pierwszego przykładu powinniśmy otrzymać cztery kolejne elementy zaczynając od drugiego. W tym przykładzie zadziałała funkcja isset sprawdzająca czy dana zmienna istnieje. Pierwszy element nie został wyświetlony ponieważ indeksy tablic są liczone od zera zaś ostatni przebieg pętli nie wyświetlił nic ponieważ w pięcioelementowej tablicy nie mamy indeksu 5. (0,1,2,3,4)

Pętla foreach

Kolejną pętlą jest FOREACH, ta pętla jest stworzona do wyświetlania elementów tablic. I jest prostsza nawet od pętli for. Przykład:

foreach($assoc_array as $key => $value){
        echo "Klucz ". $key . " wartość: " . $value . "<br>";
}

definiując pętlę podajemy tablicę gdzie przy każdym wykonaniu przypisujemy klucz do zmiennej $key a wartość do zmiennej $value. Klucze są opcjonalne, więc jeśli usuniemy z pierwszej lini $key => to program dalej będzie działał (pod warunkeim że usuniemy również w kolejnej linii tę zmienną gdzie jej używamy. Klucze są szczególnie przydatne przy tablicach assocjacyjnych.

foreach($array as $value){
        echo "wartość: " . $value . "<br>";
}

Pętla while

Dopóki jakiś warunek jest spełniony to pętla while, konstrukcyjnie przypomina i działa jak if, który się powtarza dopóki zadany warunek jest spełniony dlatego trzeba uważać żeby nie zdarzyła się sytuacja, w której warunek zawsze będzie prawdziwy np 1 == 1 bo wtedy program będzie się wykonywał w nieskończoność i się zawiesi.

$i = 0;
while($i < 5){
    $i++;
    echo $i . "<br>";
}

Kod powyższego przykładu powinien się wykonać pięć razy. Ta pętla jest wykorzystywana najczęściej do pobierania danych z plików lub z bazy gdzie jeszcze nie wiemy ile jest danych, ale o tym później.

Pętla do_while

… czyli raczej rzadko wykorzystywana pętla ale jako że jest niemal identyczna jak while to praktycznie każdy o niej wie, różnica jest taka że w while warunek jest sprawdzany przed wykonanim instrukcji zaś w do_while sprawdzany jest po wykonaniu instrukcji. Czyli w przypadku „do while” instrukcja zawsze zostanie wykonana co najmniej raz.

$i = 0;
do {
    $i++;
    echo $i . "<br>";
} while($i < 0);
echo $i;

Mimo iż warunek nie jest spełniony zmienna $i została powiększona o jeden.

$i = 0;
while($i < 0) {
    $i++;
    echo $i . "<br>";
}
echo $i;

W przypadku pętli while to się nie wydarzy, a w przeglądarce pojawi się zero.

No i to by było na tyle w tej lekcji, zachęcam do wykonania zadań do przetworzenia.

Zadania

Zadanie 1

Napisz program obliczający potęgę. Czyli formularz z dwoma polami na wpisanie liczby, pierwsze pole na liczbę drugie na potęgę. np 2 do potęgi 2 to 4 a 2 do potęgi 3 to 8 dalej jest 16,32,64 itd. Za pomocą pętli mnożymy x razy.

Zadanie 2

Stwórz tablicę assocjacyjną zawierającą pięć kolorów gdzie kluczami będą nazwy angielskie a wartościami polskie. Następnie zrób formularz zawierający listę rozwijaną wygenerowaną za pomocą pętli foreach na podstawie tablicy. Po wysłaniu formularza pod spodem wyświetla się polska nazwa wybranego koloru.