PHP - Pętle

in #polish6 years ago

Poznaliśmy ostatnio tablice, które pozwalają pod jedną nazwą przechowywać wiele rzeczy. Przyda nam się to do pętli, które dzisiaj poznamy.

Pętle to taka funkcja (?), która wykonuje dany fragment kodu, dopóki warunek jest spełniony. W PHP są przynajmniej 4 pętle ;)

For

For często wykorzystuje się gdy wiemy do ilu razy pętla ma się wykonać. Najczęściej służy do wykonania się na całym przedziale. Co to znaczy? Powiedzmy, że chcemy wyznaczyć wszystkie liczby parzyste od 1 do 100. Mamy więc cały przedział, który możemy przeczesać. Budowa pętli wygląda dość skomplikowanie, ale jest prosta (omówimy to oczywiście).

for($i=0; $i<=100; $i++)

Oczywiście podajemy najpierw, że to for. $i=0 oznacza tyle, że tworzymy zmienną $i i dajemy jej wartość 0. Druga część to warunek - rób coś dopóki $i jest mniejsze lub równe 100. $i++ lub $i-- to skrócony zapis oznaczający $i=$i+1 (lub dla $i--) $i=$i-1.

Ogólnie działa to tak, że bierzemy 0 i wykonujemy jakieś zadania w pętli. Jeśli się zadania skończą wykonywać, to zwiększamy licznik ($i) o 1 i wykonujemy ponownie - aż do $i równego lub większego od 100.

Przykład

for($i=0; $i<10; $i++) {
echo $i;
}

Wyświetli wszystkie liczby od 0 do 9 (bo jak wejdzie na 10 to $i jest równe 10, a nie mniejsze, więc nie wykona).

While

While to pętla, którą stosuje się gdy nie znamy jakiegoś zbioru. Powiedzmy losujemy liczbę i dopóki liczba nie jest równa 3 to losujemy dalej.

Dla przykładu.

$i=0;
while($i!=5) {
$i = rand(0, 9);
echo $i;
}

Da wynik: 96196316833325

Mamy tak. Sami tworzymy sobie zmienną (dla przykładu $i=0). Pętla wykonuje się dopóki $i nie jest równe 5. Potem losuje sobie liczbę i ją wyświetla. I tak aż się zakończy liczenie.

Do-While

Do-While to alternatywna troszkę funkcja do While. Ogólnie różnicą jest to, że przynajmniej raz się wykona. Jeśli w pierwszym przykładzie $i=5 od razu to pętla nigdy nie zostanie wykonana. W przypadku do-while zostanie przynajmniej raz.

$i=5;
do {
$i = rand(0, 9);
echo $i;
} while ($i!=5);

Przykład. $i daliśmy na 5 i pętla While z takim warunkiem się nie wykona, a Do While tak (przynajmniej raz :D).

Foreach

Wszystko jest fajne jak operujemy na liczbach. A co jak na tablicach asocjacyjnych? Zamiast indeksów liczbowych mają nazwy. Dla przykładu:

$maz["Ania"]="Jerzy";
$maz["Beata"]="Krzysztof";
$maz["Cecylia"]="Andrzej";

Oj trudne, trudne. Przecież nie możemy za liczbę złapać. Foreach jest powszechnie stosowany dla tablic. Ogólnie (tak sobie tłumaczę) przerabia się tablicę na pojedynczą wartość i wykonuje.

$maz["Ania"]="Jerzy";
$maz["Beata"]="Krzysztof";
$maz["Cecylia"]="Andrzej";

foreach($maz as $maz_dziewczyny) {
echo $maz_dziewczyny.PHP_EOL;
}

Oto jak działa. Stworzyliśmy sobie tablicę $maz (Mąż :D). Foreach bierze tablicę mąż i przedstawia ją jako maz_dziewczyny. Mąż dziewczyny nie jest tablicą już, a np. stringiem. Można więc wywoływać echo.

Czyli po prostu rozrywa tablicę i wykonuje się dopóki nie wykona się na wszystkich elementach.

Break

Przydatna rzecz. Pętla wykonuje się od np. 1 do 1000. Ale czasem możemy chcieć przerwać ją wcześniej, bo znaleźliśmy coś czego szukaliśmy. Nie ma sensu dalej jej wykonywać

break;

Pozwala przerwać wykonywanie się pętli. Pozwala to zaoszczędzić czas jeśli dobrze to rozegramy ;)

Zadanie domowe

Wyświetlić wszystkie liczby nieparzyste w kolejności od 100 do 1 ;)

Pytania? Śmiało!

Sort:  

foreach dla mnie najbardziej przydatna, czasami używam zwykłego for'a a while i do while to już rzadko :)

Przykład While jest chyba z błędem. Co prawda nie umiem programować, ale na moje opis albo kod, (a wynik także poza tym) zawierają błąd.

Tzn? Chyba dobrze. Ewentualnie zapytasz czemu jest piątka?
Najpierw kod sprawdza, potem losuje, a potem wyświetla tekst. Dlatego na końcu jest 5.

clean code :)

$maz = [
    "Ania"    => "Jerzy", 
    "Beata"   => "Krzysztof", 
    "Cecylia" => "Andrzej"
];

Coin Marketplace

STEEM 0.30
TRX 0.12
JST 0.034
BTC 63688.35
ETH 3125.30
USDT 1.00
SBD 3.97