Iteracja po tablicach: foreach, array_map, array_filter

Iteracja po tablicach w PHP może odbywać się na kilka sposobów. Oprócz pętli foreach, można wykorzystać funkcje takie jak array_map czy array_filter, które przyspieszają i upraszczają przetwarzanie danych. Te metody pozwalają skupić się na logice, zamiast ręcznie zarządzać indeksami.


Metody iteracji po tablicach

  • foreach
    • Najprostszy sposób przejścia przez każdy element. Przykład: foreach ($tab as $val) { ... }.
    • Możesz też pobierać klucz: foreach ($tab as $key => $val).
  • array_map($callback, $tablica)
    • Przetwarza tablicę, zwraca nową z rezultatami wywołania $callback na każdym elemencie.
    • Przykład: array_map('strtoupper', $imiona) – konwertuje wszystkie imiona na wielkie litery.
  • array_filter($tablica, $callback)
    • Tworzy nową tablicę tylko z tymi elementami, dla których $callback zwróci true.
    • Przykład: array_filter($liczby, fn($x) => $x > 10) – zatrzyma wartości większe od 10.
Przykład
<?php
$liczby = [5, 10, 15, 20];

// Przykład: foreach
echo "<h3>foreach</h3>";
foreach ($liczby as $liczba) {
  echo "Liczba: $liczba<br>";
}

// Przykład: array_map
echo "<h3>array_map</h3>";
$podwojone = array_map(fn($x) => $x * 2, $liczby);
echo "Po pomnożeniu: " . implode(", ", $podwojone) . "<br>";

// Przykład: array_filter
echo "<h3>array_filter</h3>";
$wieksze = array_filter($liczby, fn($x) => $x > 10);
echo "Większe od 10: " . implode(", ", $wieksze) . "<br>";
?>
Zwrócona zawartość
foreach
Liczba: 5
Liczba: 10
Liczba: 15
Liczba: 20

array_map
Po pomnożeniu: 10, 20, 30, 40

array_filter
Większe od 10: 15, 20

Przykładowe zastosowania

  • Przekształcanie wartości
    • array_map() jest świetne do modyfikacji każdego elementu, np. formatowania tekstu.
  • Filtrowanie danych
    • array_filter() wyodrębnia tylko te elementy, które spełniają dany warunek (np. przedział liczbowy).
  • Eliminacja pętli
    • Zamiast ręcznego for/while, użycie foreach lub array_map ułatwia i skraca kod.

Podsumowanie

  • foreach to najprostsza pętla do iterowania, szczególnie dla tablic asocjacyjnych.
  • array_map przekształca całą tablicę, zwracając nową z wynikami funkcji na każdym elemencie.
  • array_filter tworzy nową tablicę z elementami spełniającymi warunek.
  • Dzięki tym technikom możesz zredukować ilość kodu i skupić się na logice przetwarzania danych.