A tömbök elemeit a foreach ciklus segítségével járhatjuk be. Tartsuk szem előtt, hogy a foreach csak tömbök és objektumok esetében működik, egyéb változótípus esetén hibát fog eredményezni. A szerkezete így néz ki:
foreach (tömb as $ertek) {
esemény;
}
valamint:
foreach (tömb as $kulcs => $ertek) {
esemény;
}
Az első szerkezetben a tömb elemeinek az értékét kapjuk vissza, a másodikban a tömb kulcsát is hozzárendeljük a $kulcs változóhoz. A foreach ciklus mindig a legelső elemre ugrik, és egyenként megy végig a tömb összes elemén.
--------------------
<?php
$tomb = array('első', 'második', 'harmadik');
foreach ($tomb as $ertek) {
echo $ertek . "\n"; // Kiírja a tömb elemeit
}
?>
--------------------
Kulcsok hozzárendelése:
--------------------
<?php
$tomb = array('első', 'második', 'harmadik');
foreach ($tomb as $kulcs => $ertek) {
echo $kulcs . ' --- ' . $ertek . "\n"; // Kiírja a tömb kulcsait és elemeit
}
?>
--------------------
Figyelem!
Mivel a ciklus a belső tömbmutatóra támaszkodik, annak megváltoztatása a ciklus belsejéből szokatlan viselkedést eredményezhet!
Az $ertek változóban a ciklus befejezés után benne marad az utolsó felvett érték! Ha a továbbiakban nincs rá szükségünk, akkor dobjuk el az unset($ertek); függvény meghívásával:
--------------------
<?php
$tomb = array('első', 'második', 'harmadik');
foreach ($tomb as $kulcs => $ertek) {
echo $kulcs . ' --- ' . $ertek . "\n"; // Kiírja a tömb kulcsait és elemeit
}
echo $ertek; // Kiírja: harmadik
unset($ertek);
echo $ertek; // Figyelmeztetést kapunk nemlétező változóra!
?>
--------------------
Többdimenziós (egymásba ágyazott) tömbök esetében két opciónk is van a tömb bejárására: egymásba ágyazott foreach ciklusokkal, vagy list() függvénnyel. A feladat szabja meg a választott módszert:
--------------------
<?php
$tomb = array(
'elso' => array('a','b','c'),
'masodik' => array('d','e','f'),
'harmadik' => array('g','h','i')
);
// Első módszer, egymásba ágyazott foreach szerkezetekkel:
foreach ($tomb as $kulcs => $ertek) {
foreach ($ertek as $belso_ertek) {
echo $kulcs . ' --> ' . $belso_ertek . "\n"; // Kiírja a tömb kulcsait és elemeit
}
}
// Második módszer, list() függvénnyel:
foreach ($tomb as $kulcs => list($elso_elem, $masodik_elem, $harmadik_elem)) { // Tömb kibontása list() függvénnyel
echo "$kulcs --> $elso_elem, $masodik_elem, $harmadik_elem \n";
}
?>
--------------------
-----------------------------------------------------------------------------------------------------
Feladatok
1. Hozzunk létre egy 5 elemes tömböt, és írassuk ki az elemek értékeit!
2. Hozzunk létre egy 3 elemes asszociatív tömböt, és írassuk ki a elemek kulcsait és értékeit!
3. Hozzunk létre egy többdimenziós tömböt, és írjuk ki az összes elem értékét!