środa,
Pętla foreach
Język PHP udostępnia kilka rodzajów pętli, foreach jest świetnym narzędziem do operowania na elementach tablicy. W programowaniu operacje wykonywane wewnątrz pętli określa się mianem iteracji (iteracja (łac. iteratio) – powtarzanie).
Przykład 1
W pierwszym przykładzie za pomocą pętli wygenerowano listę HTML. W każdej iteracji do zmiennej $value podstawiana jest kolejna wartość tablicy.
$lista = ['raz', 'dwa', 'trzy'];
echo '<ul>';
foreach($lista as $value) {
echo "<li>$value</li>";
}
echo '</ul>';
Podobny efekt można uzyskać bez uciekania się do pętli.
$lista = ['raz', 'dwa', 'trzy'];
echo '<ul><li>' . implode('</li><li>', $lista) . '</li></ul>';
Przykład 2
W drugim przykładzie za pomocą funkcji range() wygenerowano tablicę liczb z zakresu 0–10 i wykorzystano ją do wypisania w pętli pierwszych dziesięciu kwadratów liczby dwa.
foreach(range(0,10) as $potega)
echo "2^$potega = " . 2**$potega . '<br>';
/*
2^0 = 1
2^1 = 2
...
2^10 = 1024
*/
Przykład 3
Pętle mogą się zagnieżdżać. Kod przykładu wypisuje tzw. tabliczkę mnożenia. Wykorzystano wygenerowaną przez funkcję range() tablicę liczb z zakresu 1–10. Pierwsza pętla (zewnętrzna) pobiera kolejne liczby i przekazuje je do pętli wewnętrznej, w której są one mnożone przez wszystkie elementy tablicy.
$x = range(1,10);
foreach($x as $a) {
foreach($x as $b) {
echo "$a * $b = " . $a * $b . '
';
}
echo '
';
}
/*
1 * 1 = 1
1 * 2 = 2
...
10 * 10 = 100
*/
Przykład 4
W kolejnym przykładzie za pomocą iteracji obliczana jest suma pierwszych stu liczb naturalnych. Tablicę liczb wygenerowano korzystając z funkcji range().
$suma = 0;
foreach(range(1,100) as $val) $suma += $val;
echo $suma; // 5050
Język PHP udostępnia funkcję pozwalającą zsumować elementy tablicy, jest to szybsza i prostsza metoda niż przedstawione rozwiązanie iteracyjne. Pętle można wykorzystać w mniej typowych przypadkach, np. obliczenie sumy kwadratów pierwszych stu liczb naturalnych ($suma += $val*$val).
echo array_sum(range(1,100)); // 5050
Przykład 5
W przypadku tablicy asocjacyjnej użyteczne do generowania treści mogą być także klucze. W ostatnim przykładzie wykorzystano dającą łatwy dostęp do kluczy tablicy podczas iteracji rozszerzoną składnię pętli foreach.
$linki = [
'CKZiU Mrągowo' => 'https://ckziumragowo.pl',
'MEN' => 'https://men.gov.pl',
'Wikipedia' => 'https://pl.wikipedia.org/'
];
echo '<ul>';
foreach($linki as $klucz => $url) {
echo "<li><a href="$url">$klucz</a<</li>";
}
echo '</ul>';