home 2024. március 29., Auguszta napja
Online előfizetés
A PHP foreach loop
Erdsoft
2019.05.29.
LXXIV. évf. 21. szám
A PHP foreach loop

Korábbi két cikkünkben bemutattuk a PHP while és for ciklusát. Megállapítottuk, mikor melyiket tanácsosabb használni. Több példát is bemutattunk mindkét loop használatára, és ha fordítottál egy kis időt a gyakorlásukra, most már biztosan otthonosan mozogsz a témában. Nézzük, mit tanultunk meg eddig a ciklusokról:

 

  1. A PHP while loop (melynek ritkán használt magyar megnevezése az előtesztelő ciklus) addig ismétlődik a kódblokkon, amíg a feltétel, melyet megadtunk, igaz. Amint a feltétel hamis lesz, a ciklus leáll.
  2. A PHP for loop esetében a ciklus addig ismétlődik a kódblokkon, amíg a számláló nem ér el egy előre meghatározott értéket.

Mivel az első két típussal már megismerkedtél, bizonyára a foreach loop megértése sem fog nagyobb gondot okozni. Vágjunk bele!

Képzeljük el, hogy van egy olyan asszociatív tömbünk, amelyen szeretnénk alkalmazni a ciklust. A PHP egy egyszerű módot nyújt arra, hogy a tömb minden elemét a ciklusba tudjuk foglalni. A foreach állítás tökéletesen alkalmas erre. A foreach ciklus a tömb minden elemére megismétlődik a kódblokkon. Fontos megjegyezni, hogy ez a looptípus csak a tömbökön működik, és arra használjuk, hogy a tömb minden kulcs-érték párjára lefusson a ciklus. Egyszerűbben úgy is fogalmazhatnánk, hogy a foreach loop a tömb minden elemére lefuttatja a kódot.

Amíg a for loop és a while loop addig fut, amíg egy-egy feltétel igaz, a foreach loop addig fut, amíg a tömb minden elemén végig nem megy.

Lássunk egy egyszerű példát. Tegyük fel, hogy van egy asszociatív tömbünk, melyben a cégünk munkatársainak nevét tároljuk, mint kulcsokat, az alkalmazottak kora pedig az érték. Szeretnénk tudni, milyen idősek a munkatársaink, ezért a foreach loop segítségével kiírjuk minden kolléga nevét és korát.
 

PHP-kód:

$employee_ages = array();
$employee_ages['Vera'] = '28';
$employee_ages['József'] = '16';
$employee_ages['Sándor'] = '35';
$employee_ages['Hajnalka'] = '46';
$employee_ages['Blanka'] = '34';
 
foreach ($employee_ages as $key => $value) {
    echo 'Név: ' . $key . ', Kor: ' . $value . '<br />';
}
 

Megjelenítés a böngészőben:

Név: Vera, Kor: 28
Név: József, Kor: 16
Név: Sándor, Kor: 35
Név: Hajnalka, Kor: 46
Név: Blanka, Kor: 34
 

A foreach loop szintaxisa

A foreach loop szintaxisa egy kicsit szokatlan, ezért nézzük meg alaposabban.
Előbb próbáljuk meg a lehető legkönnyebb oldalról megközelíteni a szintaxist, mely így írható fel:
foreach ($array as $value) {
    // Kivitelezendő kód
}
 
A tömb pillanatnyi elemének értékét minden iterációkor a $value-hoz rendeljük, az array mutató pedig egy elemmel előrébb kerül. Ez a folyamat addig ismétlődik, amíg a loop el nem éri a tömb utolsó elemét.
A következő példa bemutatja a ciklust, mely kiírja a tömb ($colors) értékeit.
<?php
$colors = array('piros', 'zöld', 'kék', 'sárga');
foreach ($colors as $value) {
    echo $value . '<br />';
}
?>

 

Megjelenítés a böngészőben:

piros
zöld
kék
sárga
A foreach szintaxis a következőképp is felírható:
$employee_ages as $key => $value
Ez az állítás az alapszintaxis kibővítése, és nagyjából a következőt jelenti: szeretnék az $employee_ages asszociatív tömb minden elemére vonatkozóan hivatkozni a kulcsra, mint $key és az értékre, mint $value.
A "=>" operátor jelképezi a kulcs és az érték közötti kapcsolatot. Térjünk vissza az alkalmazottak korára vonatkozó példára, melyben a kulcs a $key, az érték pedig a $value nevet viseli, de a példa könnyebb megértése érdekében úgy is gondolhatunk rájuk, mint $name és $age. A következő példában ezt fogjuk bemutatni — figyeld meg, hogy az eredmény nem változott, hiszen csak a változók nevét változtattuk meg, mely a kulcsokra és az értékekre hivatkozik.

 
PHP-kód:

$employee_ages = array();
$employee_ages['Vera'] = '28';
$employee_ages['József'] = '16';
$employee_ages['Sándor'] = '35';
$employee_ages['Hajnalka'] = '46';
$employee_ages['Blanka'] = '34';
foreach ($employee_ages as $name => $age) {
    echo 'Név: ' . $name . ', Kor: ' . $age . '<br />';
}
 

Megjelenítés a böngészőben:

Név: Vera, Kor: 28
Név: József, Kor: 16
Név: Sándor, Kor: 35
Név: Hajnalka, Kor: 46
Név: Blanka, Kor: 34
Nézzünk még egy példát.

 

PHP-kód:

<?php
$superhero = array(
    'név' => 'Peter Parker',
    'email' => 'peterparker@mail.com',
    'kor' => 18,
);
 
foreach ($superhero as $key => $value) {
    echo $key . ' : ' . $value . '<br>';
}
?>

 

Megjelenítés a böngészőben:

név : Peter Parker
email : peterparker@mail.com
kor : 18
 

Összegzés:

Mai leckénk végére érkeztünk — most már a tömbökön is alkalmazhatod a ciklusokat! Következő cikkünkben bemutatjuk a while ciklus módosított változatát, a do...while ciklust. Hogy minél könnyebb dolgod legyen a do...while ciklussal, javasoljuk, hogy olvasd vissza a while ciklusról szóló cikkünket, és frissítsd fel a tudásod! A do...while az utolsó ciklustípus, mellyel foglalkozni fogunk — megismerése után már magabiztosan tudod majd használni az igen praktikus PHP-ciklusokat.

 


 

NYEREMÉNYJÁTÉK!

Rovatunk elsődleges célja, hogy közelebbről is bemutassa a legismertebb webtechnológiákat. Azok között az olvasók között, akik minden héten követik rovatunkat, azaz velünk tanulják a programozás alapjait és kitöltik a feladatsort, a sorozat végén egy laptopot sorsolunk ki.

Heti kérdés:

Melyik operátor jelzi a kulcs és az érték közötti kapcsolatot?
1. <>
2. =>
3. ==

 
A választ a tanulok@erdsoft.com e-mail-címre kell elküldeni, a tárgysorba pedig
a következőt kell beírni: HÉTNAP-TANULOK. Sok szerencsét!
 


 

Néhány szó rólunk:

Az ErdSoft (www.erdsoft.com) 2011-ben alakult meg. Csapatunkat a fiatalos lendület, a szakértelem, a folyamatos tanulás és tapasztalatgyűjtés jellemzi. Ügyfeleinknek igyekszünk teljes körű szolgáltatást nyújtani — bátran fordulhatnak hozzánk, legyen szó webfejlesztésről, alkalmazásokról, SEO-optimalizálásról, grafikai tervezésről, marketingről vagy szövegírásról. Csapatunk sikerét mi sem bizonyítja jobban, mint a több száz elkészült weboldal és a számos elégedett ügyfél Szerbiában, Magyarországon és az Egyesült Királyságban.

Hozzászólások
Hozzászólások
0
Hozzászólás küldése
1000 karakter áll rendelkezésére
A megjegyzésekben kifejtett vélemények a hozzászólások szerzőinek magánvéleményei, és nem tükrözik az internetes portál véleményét. A megjegyzéseket moderáljuk és jóváhagyjuk az általános szerződési feltételeknek megfelelően.
Támogatóink
Az oldal sütiket használ, hogy személyre szabjuk a tartalmakat és reklámokat, hogy működjenek a közösségi média funkciók, valamint hogy elemezzük a weboldal forgalmát. Bővebben a "Beállítások" gombra kattintva olvashat.
Az oldal sütiket használ, hogy személyre szabja az oldalon megjelenő tartalmat és reklámokat..