Zastosowanie iteracji w PHP

Jeśli kiedykolwiek pisałeś kod w PHP, to na pewno zetknąłeś się z pętlami. Nawet jeśli nie zdawałeś sobie z tego sprawy, iteracje to jedno z najczęściej używanych narzędzi w programowaniu. Dzięki nim możemy automatyzować powtarzające się czynności, przetwarzać dane i oszczędzać sobie mnóstwo klepania kodu.

W tym artykule pokażę Ci, czym są iteracje w PHP, jak działają pętle, oraz jak możesz ich używać w praktyce — od prostych przykładów, po nieco bardziej zaawansowane rozwiązania. Gotowy?

Co to jest iteracja w PHP?

Zacznijmy od podstaw. Iteracja to po prostu powtarzanie jakiejś czynności określoną liczbę razy lub dopóki spełniony jest określony warunek.
W kontekście PHP (i ogólnie programowania), iteracja oznacza powtarzanie fragmentu kodu w pętli.

PHP oferuje kilka sposobów na wykonywanie iteracji:

  • for
  • while
  • do...while
  • foreach
  • oraz iteracje za pomocą iteratorów obiektowych

Każda z tych pętli ma swoje zastosowanie — jedne nadają się do pracy z liczbami, inne z tablicami czy obiektami.

Pętla for — król prostych iteracji

Pętla for to klasyka. Używamy jej, gdy wiemy dokładnie, ile razy chcemy coś powtórzyć.
Najczęściej stosowana do prostych zadań, np. wypisania liczb od 1 do 10, wygenerowania elementów HTML, czy przetworzenia danych w tablicy o znanej długości.

🔧 Przykład:

<?php
for ($i = 1; $i <= 10; $i++) {
    echo "Liczba: $i<br>";
}
?>

Co tu się dzieje?

  • $i = 1 – zaczynamy od wartości 1
  • $i <= 10 – pętla działa, dopóki $i jest mniejsze lub równe 10
  • $i++ – po każdej iteracji zwiększamy $i o 1

Efekt?
Na ekranie pojawi się dziesięć linijek tekstu od „Liczba: 1” do „Liczba: 10”.

Pętla while — dopóki warunek jest prawdziwy

Pętla while działa trochę inaczej.
Tutaj nie mówisz z góry, ile razy ma się wykonać — po prostu podajesz warunek, a pętla kręci się, dopóki ten warunek jest spełniony.

Przykład:

<?php
$licznik = 1;

while ($licznik <= 5) {
    echo "To jest iteracja numer $licznik<br>";
    $licznik++;
}
?>

Tutaj również dostaniemy 5 linijek tekstu.
Różnica polega na tym, że możemy w każdej chwili zmienić warunek — np. przerwać pętlę wcześniej, jeśli zajdzie jakiś inny warunek w kodzie.

Pętla do...while — wykonaj przynajmniej raz

Ta pętla jest bardzo podobna do while, ale ma jedną kluczową różnicę:
zawsze wykona się co najmniej raz, niezależnie od tego, czy warunek jest spełniony.

Przykład:

<?php
$x = 10;

do {
    echo "Wartość x to $x<br>";
    $x++;
} while ($x < 5);
?>

Mimo że $x zaczyna się od 10 i warunek $x < 5 jest od razu fałszywy, kod wewnątrz pętli i tak wykona się jeden raz.

To przydatne, gdy np. chcesz coś sprawdzić lub pobrać dane co najmniej raz, zanim zdecydujesz, czy kontynuować.

Pętla foreach — idealna do pracy z tablicami i obiektami

Pętla foreach to prawdziwa perełka w PHP.
Została stworzona specjalnie do pracy z tablicami i obiektami — czyli tym, co w PHP używamy na co dzień.

Przykład z tablicą:

<?php
$owoce = ["jabłko", "banan", "gruszka", "pomarańcza"];

foreach ($owoce as $owoc) {
    echo "Lubię $owoc<br>";
}
?>

Tutaj PHP automatycznie przechodzi po każdym elemencie tablicy i przypisuje go do zmiennej $owoc.
Nie musisz liczyć długości tablicy, ani martwić się o indeksy — czysta wygoda!

A co z kluczami?

Jeśli chcesz mieć dostęp również do kluczy tablicy (np. indeksów lub nazw), użyj drugiego parametru:

<?php
$osoby = [
    "Jan" => 25,
    "Anna" => 30,
    "Piotr" => 28
];

foreach ($osoby as $imie => $wiek) {
    echo "$imie ma $wiek lat<br>";
}
?>

Wynik:

Jan ma 25 lat  
Anna ma 30 lat  
Piotr ma 28 lat

Iteratory w PHP — iteracje na poziomie obiektowym

Jeśli pracujesz z obiektami, możesz też użyć iteratorów.
PHP posiada interfejs Iterator, który pozwala stworzyć własną klasę, po której można „iterować” jak po tablicy.

Przykład praktyczny:

Załóżmy, że mamy klasę KolekcjaUzytkownikow, która przechowuje dane o użytkownikach.

<?php
class KolekcjaUzytkownikow implements Iterator {
    private $uzytkownicy = [];
    private $pozycja = 0;

    public function __construct($uzytkownicy) {
        $this->uzytkownicy = $uzytkownicy;
    }

    public function current() {
        return $this->uzytkownicy[$this->pozycja];
    }

    public function key() {
        return $this->pozycja;
    }

    public function next() {
        ++$this->pozycja;
    }

    public function rewind() {
        $this->pozycja = 0;
    }

    public function valid() {
        return isset($this->uzytkownicy[$this->pozycja]);
    }
}

$lista = new KolekcjaUzytkownikow(["Kasia", "Marek", "Tomek"]);

foreach ($lista as $uzytkownik) {
    echo "Użytkownik: $uzytkownik<br>";
}
?>

Dzięki temu możesz przechodzić po swojej klasie tak samo, jak po zwykłej tablicy.
To potężne narzędzie, szczególnie przy pracy z dużymi zestawami danych lub własnymi strukturami.

Iteracje a tablice wielowymiarowe

Czasami masz do czynienia z tablicami w tablicach (np. dane z bazy).
Jak sobie z tym poradzić?
Możesz użyć zagnieżdżonych pętli!

Przykład:

<?php
$produkty = [
    ["nazwa" => "Laptop", "cena" => 3500],
    ["nazwa" => "Telefon", "cena" => 2500],
    ["nazwa" => "Tablet", "cena" => 1800]
];

foreach ($produkty as $produkt) {
    echo "Produkt: " . $produkt["nazwa"] . " - Cena: " . $produkt["cena"] . " zł<br>";
}
?>

Proste i czytelne — każda iteracja przetwarza jeden produkt.

Iteracje w praktyce — prawdziwe zastosowania

Okej, teoria teorią, ale jak używać iteracji w prawdziwych projektach?

Oto kilka typowych przykładów:

Generowanie elementów HTML

Iteracje świetnie nadają się do generowania dynamicznego HTML:

<?php
$menu = ["Strona główna", "O nas", "Kontakt", "Blog"];

echo "<ul>";
foreach ($menu as $pozycja) {
    echo "<li>$pozycja</li>";
}
echo "</ul>";
?>

Przetwarzanie danych z formularza

<?php
foreach ($_POST as $klucz => $wartosc) {
    echo "Pole: $klucz = $wartosc<br>";
}
?>

Dzięki temu możesz łatwo przejść po wszystkich polach formularza bez ich ręcznego wypisywania.

Operacje na plikach

Możesz np. iterować po liniach w pliku:

<?php
$plik = fopen("dane.txt", "r");

while (!feof($plik)) {
    echo fgets($plik) . "<br>";
}

fclose($plik);
?>

Najczęstsze błędy przy iteracjach w PHP

Okej, iteracje są proste — ale to nie znaczy, że nie można popełnić błędów.
Oto kilka typowych wpadek:

  1. Brak inkrementacji w pętli while lub for
    → Może skończyć się nieskończoną pętlą, która zawiesi skrypt.
  2. Modyfikowanie tablicy w trakcie iteracji foreach
    → Zmiana tablicy podczas jej przetwarzania może dawać nieoczekiwane wyniki.
  3. Brak warunku zatrzymania
    → Zawsze upewnij się, że warunek pętli kiedyś stanie się fałszywy.
  4. Zbyt głębokie zagnieżdżenie pętli
    → Jeśli masz kilka pętli w sobie, warto pomyśleć o refaktoryzacji kodu lub zastosowaniu funkcji.

Kilka wskazówek, jak pisać lepsze iteracje

  • Używaj foreach zawsze, gdy pracujesz z tablicami – jest bezpieczniejsza i czytelniejsza.
  • Unikaj zbyt długich pętli w jednym miejscu — lepiej wydziel je do funkcji.
  • Jeśli przetwarzasz ogromne dane, rozważ użycie iteratorów lub generators (yield).
  • Testuj warunki zatrzymania — zwłaszcza przy while i do...while.

Bonus: użycie generatorów (yield) – nowoczesna iteracja

Od PHP 5.5 mamy jeszcze jedno potężne narzędzie — generatory.
Pozwalają tworzyć iteracje bez konieczności przechowywania całych danych w pamięci.

Przykład:

<?php
function liczDo($limit) {
    for ($i = 1; $i <= $limit; $i++) {
        yield $i;
    }
}

foreach (liczDo(5) as $liczba) {
    echo "Liczba: $liczba<br>";
}
?>

Tutaj funkcja liczDo() zwraca dane po jednym elemencie na raz, zamiast tworzyć całą tablicę.
Świetne rozwiązanie przy dużych zbiorach danych!

Iteracje to serce programowania w PHP.
Bez nich trudno sobie wyobrazić przetwarzanie danych, tworzenie dynamicznych stron czy generowanie raportów.

Szukasz taniego i dobrego hostingu dla swojej strony www? - Sprawdź Seohost.pl