PHP foreach: pętla, zasada działania, przykłady

Foreach to ulepszona wersja pętli for.

Pętla foreach iteruje po zestawie danych, który jej przekażemy. Nie musisz się zatem martwić zwiększaniem wartości zmiennej i ustalaniem górnego limitu.

Przekazując pętli foreach tablicę masz pewność, że pętla wykona blok kodu dla każdego z obecnych w niej elementów.

Nie musisz określać punktu początkowego i końcowego. W przypadku tej pętli przekazujesz tylko listę elementów (np. w formie tablica) i pętla foreach przechodzi przez nią, jeden po drugim, do samego końca.

Zobacz przykład z tablicą:

<?php
$numbers = array();

// wypełnij dane przy pomocy pętli for
for($i = 0; $i < 10; $i++)
{
    $numbers[] = $i;
}

// użycie pętli foreach na tablicy
foreach($numbers as $number)
{
    // w każdym kolejnym przebiegu następny element tablicy 
    // jest przechowywany w zmiennej $number
    echo $number;
}

Pewnie widzisz to na pierwszy rzut oka. Podczas pracy ze zbiorami danych najwygodniej jest używać pętli foreach. Zaryzykuję nawet stwierdzenie, że pętla foreach jest najczęściej stosowaną pętlą w programowaniu w PHP.

Najważniejsze zalety

Poniżej trzy najważniejsze zalety:

  1. Nie musisz dokładnie wiedzieć, ile elementów zawiera zestaw.
  2. Nie musisz wyodrębniać ich pojedynczo.
  3. Pętla foreach działa z dowolnymi indeskami (za chwilę przykład z tablicą asocjacyjną).

W każdym przebiegu tej pętli otrzymujesz kolejny element dostępny w zmiennej pomocniczej, zadeklarowanej podczas definicji pętli (po słowie kluczowym „as”). W naszym przykładzie zdefiniowaliśmy „$numbers as $number”, więc otrzymujemy każdą następną liczbę w postaci zmiennej $number.

Teraz czas na przykład z tablicą asocjacyjną.

Foreach i tablice asocjacyjne

Dla szybkiego przypomnienia, tablice asocjacyjne to te z niestandardowym indeksem. Jej elementy nie są numerowane (1, 2, 3 itd.) tylko możesz sam definiować, jak poszczególny indeks wygląda.

Posłużmy się przykładem ucznia, któremu dodajemy poszczególne atrybuty (jak imię, nazwisko, data urodzenia itp.).

<?php

$student = array();
$student['firstName'] = 'Marcin';
$student['lastName'] = 'Wesel';
$student['birthday'] = '19-05-1989';

foreach ($student as $data)
{
    echo "Wartość atrybutu: $data";
}

Skrypt wyświetli trzy wartości atrybutu: Marcin Wesel 19-05-1989.

Pętla foreach ma jeszcze jedną ważną zaletę. Mianowicie, możesz pobrać wartość klucza (indeksu) i uzyskać do niego dostęp w każdym z przebiegów pętli.

Zobacz przykład:

<?php

$student = array();
$student['firstName'] = 'Marcin';
$student['lastName'] = 'Wesel';
$student['birthday'] = '19-05-1989';

foreach ($student as $key => $data)
{
    echo "Wartość dla indeksu: $key to: $data";
}

Wtedy uzyskasz rezultat w postaci: „Wartość dla indeksu: firstName to: Marcin”.

Ta pętla również wspiera przerwania w postaci break i continue. Możesz w każdym momencie przerwać jej wykonywanie lub przeskoczyć do kolejnej iteracji.

To naprawdę potężne narzędzie. Założę się, że będziesz z niej często korzystać.

W kolejnej lekcji podzielę się z Tobą wiedzą na temat korzystania w PHP z dat i czasu. Zapraszam serdecznie.

Spis lekcji w rozdziale trzecim

Poprzednia lekcja: Definiowanie indeksu tablicy Następna lekcja: Data i czas