PHP foreach zanka
X

PHP foreach zanka

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 foreach zanka 1
PHP foreach zanka 2
PHP foreach zanka 2
PRIMER
<?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";
}
            
REZULTAT
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
            

Ključi in vrednosti

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.

Ključi in vrednosti
Ključi in vrednosti
PRIMER
<?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";
}
            
REZULTAT
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
            

Zanka foreach na objektih

Zanko foreach lahko uporabimo tudi za zankanje skozi objekte.

Zanka foreach na objektih
Zanka foreach na objektih
PRIMER
<?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";
}
            
REZULTAT
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
            

Izjava break

S stavkom break ustavimo zanko, tudi, če še ni dosegla konca.

Izjava break
Izjava break
PRIMER
<?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";
}
            
REZULTAT
C:\xampp\php\php.exe -c C:\xampp\php\php.ini "C:\Users\"
Zanka foreach:

Jabolka
Banane

Process finished with exit code 0
            

Izjava continue

S stavkom continue lahko ustavimo trenutno ponovitev in nadaljujemo z naslednjo.

Izjava continue
Izjava continue
PRIMER
<?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";
}
            
REZULTAT
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
            

Izjava foreach z referencami

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.

Izjava foreach z referencami
Izjava foreach z referencami
PRIMER
<?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);
            
REZULTAT
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