A foreach ciklus 4/3213

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.

A tömb bejárásának, kettő formája van

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.
            }






Példák tömb bejárására.

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

 



A foreach ciklus esetében is, tetszőleges műveleteket végezhetünk a tömb elemiben tárolt adatokkal.

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