Zanka foreach poteka skozi blok kode za vsak element v matriki ali vsako lastnost v objektu. Najpogosteje se zanka foreach uporablja za zankanje po elementih matrike.
<?php
echo "Zanka foreach:\n\n";
// definiramo polje s sadjem
$sadje = ['Jabolka', 'Banane', 'Češnje', 'Hruške', 'Marelice'];
// uporabimo foreach zanko za iteracijo preko elementov polja
foreach ($sadje as $sadniElement) {
echo $sadniElement . "\n";
}
C:\xampp\php\php.exe -c C:\xampp\php\php.ini "C:\Users\"
Zanka foreach:
Jabolka
Banane
Češnje
Hruške
Marelice
Process finished with exit code 0
Zgornji primer matrika prikazuje indeksirano matriko, kjer ima prvi element ključ 0, drugi ključ 1 in tako naprej. Asociativni nizi so drugačni, ker uporabljajo imenovane ključe, ki jih dodelimo sami in pri zankanju skozi asociativne nize bomo morda želeli obdržati ključ in vrednost.
<?php
echo "Zanka foreach:\n\n";
// definiramo polje s sadjem
$sadje = [
'Jabolka' => 'so sadeži, ki rastejo na drevesu jablani.',
'Banane' => 'vsebujejo vitamine, minerale in vlaknine.',
'Češnje' => 'predstavljajo pomembno sadno vrsto.',
'Hruške' => 'lahko uživamo tako sveže, posušene kot tudi predelane v sokove.',
'Marelice' => 'je drevo iz družine rožnic in rodu sliv.'];
// uporabimo foreach zanko za iteracijo preko elementov polja
foreach ($sadje as $a => $b) {
echo "$a $b\n";
}
C:\xampp\php\php.exe -c C:\xampp\php\php.ini "C:\Users\"
Zanka foreach:
Jabolka so sadeži, ki rastejo na drevesu jablani.
Banane vsebujejo vitamine, minerale in vlaknine.
Češnje predstavljajo pomembno sadno vrsto.
Hruške lahko uživamo tako sveže, posušene kot tudi predelane v sokove.
Marelice je drevo iz družine rožnic in rodu sliv.
Process finished with exit code 0
Zanko foreach lahko uporabimo tudi za zankanje skozi objekte.
<?php
echo "Zanka foreach na objektih:\n\n";
// definiramo razred 'Sadje'
class Sadje {
public $ime;
public $barva;
public function __construct($ime, $barva) {
$this->ime = $ime;
$this->barva = $barva;
}
}
// ustvarimo polje objektov 'Sadje'
$sadjePolje = [
new Sadje('Jabolko', 'Rdeča'),
new Sadje('Banana', 'Rumena'),
new Sadje('Češnja', 'Rdeča')
];
// uporabimo foreach zanko za iteracijo preko objektov v polju
foreach ($sadjePolje as $sadje) {
echo "Sadje: " . $sadje->ime . ", Barva: " . $sadje->barva . "\n";
}
C:\xampp\php\php.exe -c C:\xampp\php\php.ini "C:\Users\"
Zanka foreach na objektih:
Sadje: Jabolko, Barva: Rdeča
Sadje: Banana, Barva: Rumena
Sadje: Češnja, Barva: Rdeča
Process finished with exit code 0
S stavkom break ustavimo zanko, tudi, če še ni dosegla konca.
<?php
echo "Zanka foreach:\n\n";
// definiramo polje s sadjem
$sadje = ['Jabolka', 'Banane', 'Češnje', 'Hruške', 'Marelice'];
// uporabimo foreach zanko za iteracijo preko elementov polja
foreach ($sadje as $sadniElement) {
if ($sadniElement == 'Češnje') break;
echo $sadniElement . "\n";
}
C:\xampp\php\php.exe -c C:\xampp\php\php.ini "C:\Users\"
Zanka foreach:
Jabolka
Banane
Process finished with exit code 0
S stavkom continue lahko ustavimo trenutno ponovitev in nadaljujemo z naslednjo.
<?php
echo "Zanka foreach:\n\n";
// definiramo polje s sadjem
$sadje = ['Jabolka', 'Banane', 'Češnje', 'Hruške', 'Marelice'];
// uporabimo foreach zanko za iteracijo preko elementov polja
foreach ($sadje as $sadniElement) {
if ($sadniElement == 'Češnje') continue;
echo $sadniElement . "\n";
}
C:\xampp\php\php.exe -c C:\xampp\php\php.ini "C:\Users\"
Zanka foreach:
Jabolka
Banane
Hruške
Marelice
Process finished with exit code 0
V PHP lahko zanko foreach uporabimo tudi z referencami, kar omogoča neposredno spreminjanje vrednosti elementov v polju med iteracijo. To storimo z uporabo znaka & pred spremenljivko znotraj zanke foreach. V tem primeru zanka foreach iterira skozi polje $sadje po referenci, kar omogoča spreminjanje vsakega elementa v polju. Funkcija strtoupper se uporablja za pretvorbo vsakega sadja v velike črke.
<?php
echo "Izjava foreach z referencami:\n\n";
// definiramo polje s sadjem
$sadje = ['Jabolko', 'Banana', 'Češnja'];
// uporabimo foreach zanko po referenci za spremembo vrednosti elementov polja
foreach ($sadje as &$sadniElement) {
$sadniElement = strtoupper($sadniElement);
}
// po končani zanki `foreach` vedno ustvarite kopijo $sadniElement za preprečevanje
// nezaželenih referenc v prihodnjih uporabah:
unset($sadniElement);
// izpišemo spremenjeno polje
print_r($sadje);
C:\xampp\php\php.exe -c C:\xampp\php\php.ini "C:\Users\"
Izjava foreach z referencami:
Array
(
[0] => JABOLKO
[1] => BANANA
[2] => ČEšNJA
)
Process finished with exit code 0