A for ciklusnak, egy kiterjesztett formája a foreach ciklus.
Használata, ismeretlen számú elemet tartalmazó tömböknél, azok tartalmának bejárása.
Még a for ciklusnál, meg kell határozni a lefutások számát, jelen esetben a tömbelemek számát, addig a foreach ciklusnál elég a tömbnév és az elemnév.
Ha egy tömb, adatokkal történő feltöltését többen is végzik, nem tudhatjuk, hogy adott pillanatban hány elemet tartalmaz a tömb, ennek ellenére a foreach ciklussal bármikor bejárhatjuk ellenőrzés céljából is.
Ha a tömb lezárásáig, nem tudjuk előre, hogy mennyi elemet fog a tömb tartalmazni, akkor is, a foreach ciklus a tömb mindenegyes elemével, végrehajtásra kerül.
1. Meg kell adni a tömb nevét és egy tetszőleges elnevezésű változó nevet, ez tárolja az elemek tartalmát.
foreach ($tombnev as $adat) {
echo $adat.'<br>'; // Kiíratjuk a tömbben lévő elemek tartalmát.
}
2. Meg kell adni a tömb nevét és kettő tetszőleges elnevezésű változó nevet.
- Első változó tárolja az elemek nevét. ( Elemnév lehet szám vagy szöveg. )
- Második változó tárolja az elemek tartalmát.
foreach ($tombnev as $index => $adat) {
echo $index.' = '.$adat.'<br>'; // Kiíratjuk a tömbben lévő elemek azonosítóját és tartalmát.
}
Első példa:
Meg kell adni a tömbünk elnevezését, és a tömbelemek azonosításához szükséges, tetszőleges elnevezést (azonosítót).
foreach ($tombnev as $tombelem_azonosító) { a kapcsos zárójelek közötti utasítás végrehajtódik; }
<table border="1"> <tr> <td>
<?php
$Magyar_varosok = array ("Győr", "Szombathely", "Veszprém", "Zalaegerszeg", "Kaposvár", "Pécs", "Szekszárd", "Székesfehérvár", "Tatabánya", "Salgótarján", "Budapest", "Kecskemét", "Szeged", "Szolnok", "Miskolc", "Békéscsaba", "Debrecen", "Nyíregyháza", "Hatvan");
foreach($Magyar_varosok as $varos)
{
echo "$varos <br />";
}
?>
</td> </tr> </table>
Fenti programunk eredménye:
Csak a tömb elemeiben tárolt adatokat írja ki.
Győr Szombathely Veszprém Zalaegerszeg Kaposvár Pécs Szekszárd Székesfehérvár Tatabánya Salgótarján Budapest Kecskemét Szeged Szolnok Miskolc Békéscsaba Debrecen Nyíregyháza Hatvan |
Második példa:
Hasonló az előzőhöz, de a tömbindex értékét is elérhetővé teszi.
Meg kell adni:
- Tömbünk elnevezését. (példánkban ez szerepel: $Magyar_varosok )
- Tetszőleges elnevezésű tömbindex azonosítót. (példánkban ez szerepel: $varos_index )
- És a tömbelemek azonosításához szükséges, tetszőleges elnevezést (azonosítót). (példánkban ez szerepel: $varos )
foreach ($tombnev as $tombindex_ertek => $tombelem) { a kapcsos zárójelek közötti utasítás végrehajtódik; }
<table border="1"> <tr> <td>
<?php
$Magyar_varosok = array ("Győr", "Szombathely", "Veszprém", "Zalaegerszeg", "Kaposvár", "Pécs", "Szekszárd", "Székesfehérvár", "Tatabánya", "Salgótarján", "Budapest", "Kecskemét", "Szeged", "Szolnok", "Miskolc", "Békéscsaba", "Debrecen", "Nyíregyháza", "Hatvan");
foreach($Magyar_varosok as $varos_index => $varos)
{
echo "$varos_index - $varos <br />";
}
?>
</td> </tr> </table>
Fenti programunk eredménye:
A tömb elemeinek indexszámát (sorszámát) és a tömb elemeiben tárolt adatokat írja ki.
0 - Győr 1 - Szombathely 2 - Veszprém 3 - Zalaegerszeg 4 - Kaposvár 5 - Pécs 6 - Szekszárd 7 - Székesfehérvár 8 - Tatabánya 9 - Salgótarján 10 - Budapest 11 - Kecskemét 12 - Szeged 13 - Szolnok 14 - Miskolc 15 - Békéscsaba 16 - Debrecen 17 - Nyíregyháza 18 - Hatvan |
Például:
Angol ABC-szerint, eredeti indexeléssel, vagy újra indexeléssel is kiírathatjuk az elemekben tárolt adatokat (értékeket), stb.
Rendezés, Angol ABC-szerint, eredeti indexeléssel. (asort() függvénnyel.)
<table border="1"> <tr> <td>
<?php
$Magyar_varosok = array ("Győr", "Szombathely", "Veszprém", "Zalaegerszeg", "Kaposvár", "Pécs", "Szekszárd", "Székesfehérvár", "Tatabánya", "Salgótarján", "Budapest", "Kecskemét", "Szeged", "Szolnok", "Miskolc", "Békéscsaba", "Debrecen", "Nyíregyháza", "Hatvan");
asort($Magyar_varosok);
foreach($Magyar_varosok as $i => $ertek)
{
print ("$i - $ertek <br />");
}
?>
</td> </tr> </table>
Fenti programunk eredménye, eredeti indexeléssel és Angol ABC-szerint.
10 - Budapest 15 - Békéscsaba 16 - Debrecen 0 - Győr 18 - Hatvan 4 - Kaposvár 11 - Kecskemét 14 - Miskolc 17 - Nyíregyháza 5 - Pécs 9 - Salgótarján 12 - Szeged 6 - Szekszárd 13 - Szolnok 1 - Szombathely 7 - Székesfehérvár 8 - Tatabánya 2 - Veszprém 3 - Zalaegerszeg |
Rendezés, Angol ABC-szerint, újra indexeléssel. (sort() függvénnyel.)
<table border="1"> <tr> <td>
<?php
$Magyar_varosok = array ("Győr", "Szombathely", "Veszprém", "Zalaegerszeg", "Kaposvár", "Pécs", "Szekszárd", "Székesfehérvár", "Tatabánya", "Salgótarján", "Budapest", "Kecskemét", "Szeged", "Szolnok", "Miskolc", "Békéscsaba", "Debrecen", "Nyíregyháza", "Hatvan");
sort($Magyar_varosok);
foreach($Magyar_varosok as $i => $ertek)
{
print ("$i - $ertek <br />");
}
?>
</td> </tr> </table>
Fenti programunk eredménye, újra indexeléssel és Angol ABC-szerint.
0 - Budapest 1 - Békéscsaba 2 - Debrecen 3 - Győr 4 - Hatvan 5 - Kaposvár 6 - Kecskemét 7 - Miskolc 8 - Nyíregyháza 9 - Pécs 10 - Salgótarján 11 - Szeged 12 - Szekszárd 13 - Szolnok 14 - Szombathely 15 - Székesfehérvár 16 - Tatabánya 17 - Veszprém 18 - Zalaegerszeg |