Ciklusok
A PHP ciklusok leírása, működése, használata
- Főoldal
/
- Kurzusok
/
- Webfejlesztés
/
- PHP
/
- PHP kezdőknek
Ciklusok
A ciklusok olyan feladatok végrehajtására jöttek létre, melyeket többször kell elvégeznünk egymás után. Például, ha az alkalmazásunkban megjelenítünk egy "select" tagot, melyben ki tudjuk választani az évszámot, ahhoz a HTML kódban kézzel létre kell hoznunk minden évszámnak megfelelő "option" értéket az alábbi módon:
<select>
<option value="">Válassz évet</option>
<option value="2015">2015</option>
<option value="2014">2014</option>
<option value="2013">2013</option>
<option value="2012">2012</option>
<option value="2011">2011</option>
<option value="2010">2010</option>
</select>
Így az alkalmazásunk megjelenít egy legördülő listát, ahol kiválaszthatunk egy 2010-2015 közötti évszámot. Képzeljük el hogyha az évszámok 1900-tól 2010-ig lennének, kellene írjunk kézzel 110 db. option tagot egyesével. És ha ez a legőrdülő lista több helyen is szerepel?
Az ilyen feladatok leegyszerűsítése érdekében jöttek létre a ciklusok, mivel ez a feladat sablon feladat, ugyanazt kell leírnunk többször, csak az évszám változik. Így erre a feladatra írhatunk egy ciklust, mely végrehajtja az option tagok leírását, és kicseréli az évszámot.
Négy féle ciklus létezik a PHP-ban:
- For
- Foreach
- While
- Do-while
Mindenik ciklus képes ugyanazt a feladatot végrehajtani, viszont a működésükben van némi különbség, pl. A "For" ciklus nem képes egy asszociatív tömb elempárjait (tulajdonság és érték) végigvenni és egy feladatot végrehajtani velük, viszont a "Foreach" ciklus igen.
1. For ciklus
A For ciklus szó szerint egy robot, melynek azt tudjuk meghatározni, hogy egy feladatot hányszor hajtson végre. Jelölése a következő:
<?php
for( $i=0; $i < $size_of_elements; ++$i )
{
// Ide jön a végrehajtandó feladat
}
?>
A "$i" egy számláló, melynek segítségével a rendszer észben tartja, hogy hányadik alkalommal hajtja végre a feladatot. Mivel a tömbökben az első elem a "0". helyre kerül, ezért 0-tól szokták indítaní a számlálót. De indíthatjuk 1től is, ahogy szeretnénk.
A "$i < $size_of_elements;" egy feltétel, amely azt határozza meg, hogy a feladatot csak addig hajtsuk végre, amíg a $i értéke kisebb, mint az elemek száma, vagy egy megadott szám.
A "++$i" a feladat végrehajtása után tőrténik, amely növeli az i értékét 1-el. A ciklust úgy is írhattuk volna, hogy:
<?php
for( $i=0; $i < $number_of_runs; $i = $i + 1 )
{
// Ide jön a végrehajtandó feladat
}
?>
2. Foreach ciklus
A Foreach ciklus hasonlóan működik mint a For ciklus, viszont a Foreach ciklust csak tömbök elemein végigmenve tudjuk használni. A különbség a Foreach és a For ciklus között az, hogy nem kell meghatározzuk hányszor hajtson végre egy feladatot, nem kell tudjuk azt sem hány elem létezik az adott tömbben, a ciklus tudni fogja és annyiszor hajt végre egy feladatot ahány elem létezik az adott tömbben.
Jelölése:
<?php
foreach( $array_with_elements as $index => $element )
{
// Ide jön a végrehajtandó feladat
}
// Vagy úgy is írhatnánk, hogy:
foreach( $array_with_elements as $property => $value )
{
// Ide jön a végrehajtandó feladat
}
?>
Mindkét példa eredménye ugyanaz, csak a változók neve változott, attól függően, hogy mit tartalmaz az adott tömb. Első példánál mondhatjuk, hogy van egy listánk amelyben több elem tulajdonságai vannak, melyeket kb. így ábrázolhatnánk:
Array(
"0" => array(
"property" => "value",
"property1" => "value1",
"property2" => "value2",
),
"1" => array(
"property" => "value",
"property1" => "value1",
"property2" => "value2",
),
"2" => array(
"property" => "value",
"property1" => "value1",
"property2" => "value2",
),
)
A második példa az előző példa belső tömbjeire illik rá inkább, a elnevezések alapján.
Ha az indexek nem számok, abban az esetben For ciklust nem tudunk használni, így a Foreach a legalkalmasabb ciklus erre. Pl.
Array(
"images" => array(
"property" => "value",
"property1" => "value1",
"property2" => "value2",
),
"files" => array(
"property" => "value",
"property1" => "value1",
"property2" => "value2",
),
"categories"=> array(
"property" => "value",
"property1" => "value1",
"property2" => "value2",
),
)
3. While ciklus
A While ciklus alkalmazása olyankor esedékes amikor nem tömb elemei határozzák meg a végrehajtások számát, hanem amikor nem tudjuk meghatározni, hogy pontosan hány alkalommal kell végrehajtanunk a feladatot, de egy feltétellel meg kell határozzuk, hogy meddig hajtsa végre egymás után.
Jelölés és alkalmazási példák:
<?php
// Amíg nem esik az eső
while( $is_raining == FALSE )
{
}
// Amíg nem létezik az adott fájl
while( file_exists( $file ) == FALSE )
{
}
// Amíg az adott fájlban van sor amit beolvasni
while( fgets( $file, 1000 ) != FALSE )
{
}
?>
A ciklust jól alkalmazva felhasználhatjuk olyan tömbök elemein végrehajtandó feladat végrehajtásához, amelyben az indexek számok.
Fontos tudni, hogy a While ciklus csak akkor hajtja végre a feladatot, ha a feltétel teljesül.
4. Do-while ciklus
A Do-While ciklus pont olyan mint a While ciklus, csak 2 dologban különbözik, jelölése:
<?php
do
{
// A feladatot végrehajtjuk
}
while( $is_raining == FALSE )
// Ha még nem esik az eső, akkor végrehajtjuk a feladtot ismét
?>
A Do-While ciklus működése annyiban különbözik a While ciklusétól, hogy ez legalább egyszer végre hajtja a feladatot .
Feladatok megszakítása
Amennyiben valamilyen okból szeretnénk, a feladatok végrehajtását meg lehet szakítani. Ezt kétféle képpen tehetjük meg:
- break
- continue
A "break" megszakítás esetében a feladat végrehajtása teljesen megáll. Ha egy nagy listának az elemeivel hajtunk végre egy feladatot, és a 10. után szeretnénk megszakítani, akkor a break a megfelelő. Pl.
<?php
foreach( $elements as $index => $element )
{
// A 10. után megszakítjuk
if( $index > 10 )
{
break; // megszakítás
}
// eddig a sorig csak az első 10 elem jut el
// feladat végrehajtása
}
?>
A "continue" esetében nem történik végleges megszakítás, csak az adott elemmel nem hajtja végre a feladatot, hanem ugrik a következő elemre. Például ha van egy listánk amely könyveket tartalmaz, de mi csak egy kategóriából szeretnénk kiíratni őket, akkor a continue a megfelelő egy feltétel segítségével.
<?php
foreach( $books as $book )
{
// Ha a könyv kategóriája nem horror, ugrunk a következő könyvre
if( $book["category"] != "horror" )
{
continue; // ugrás a következőre
}
// eddig a sorig csak az a könyv jut el, melyiknél talál a kategória
// feladat végrehajtása
}
?>
A "continue" használata esetében csak a For és a Foreach ciklusok tudják, hogy mi lesz a következő elem. A While és a Do-While ciklusok esetében, csak akkor működik jól, ha jól adjuk meg a feltételt, másképp könnyen végtelen feladat végrehajtást idézhetünk elő!
- Következő lecke: Fájlok betöltése
Részletek
- Megtekintve: 449
- Haszontalannak jelölve: 0
- Hasznosnak jelölve: 0
- Értékelés: