Az alapoktól...

PHP kezdőknek

PHP kezdőknek

10. lecke - Vezérlő szerkezetek - for ciklus

2015. július 17. - Frantique

Az előző leckékben tanult ciklusokhoz képest a for ciklus komplexebb szerkezettel és funkcionalitással bír. A működése megegyezik a C nyelv for ciklusával. A szerkezete így néz ki:

for (első_kifejezés; második_kifejezés; harmadik_kifejezés) {
esemény;
}

Az első kifejezést egyszer hajtja végre, a ciklus kezdetén, majd ellenőrzi a második kifejezés kimenetét: ha IGAZ, akkor folyatja, ha HAMIS, a ciklus véget ér. Minden ciklus végén a harmadik kifejezés kiértékelésre kerül. Bármelyik kifejezés üres is lehet, vagy több kifejezést is tartalmazhat, vesszővel elválasztva, viszont a második kifejezés esetében értéket csak az utolsó elem adja (ez dönti el, hogy véget ér a ciklus, vagy nem). A második kifejezést üresen hagyva végtelen ciklust kapunk, mivel a PHP - akár a C - alapértelmezetten IGAZ értéket feltételez - ilyenkor a ciklust a már ismert break; utasítással szakíthatjuk meg.

A legegyszerűbb példán keresztül szemléltetjük a működését:

--------------------

<?php
for ($i = 0; $i < 10; $i++) {
//Kezdőérték: 0; amíg $i kisebb, mint 10, növeljük eggyel
        echo
$i . ' '; // Kiírja az aktuális $i értékét
}
?>

--------------------

Több kifejezéses konstrukcióra példa:

--------------------

<?php
for ( $j = 10, $i = 1 ; $i < 10; $j++, $i++) {
//Kezdőértékek felvétele: $j és $i; amíg $i kisebb, mint 10, növeljük eggyel a $j-t és az $i-t is
        echo
'$i: '. $i . ' $j: ' . $j . ' '; // Kiírja az aktuális $i és $j értékét
}
?>

--------------------

 Mi történik, ha elhagyjuk az első kifejezést? Mivel a PHP nem követel előzetes változó deklarálást, így "röptében" fog létrejönni az $i változó, így lényegében a fenti teljes szerkezettel egyenértékű eredményt kapunk:

--------------------

<?php
for ( ; $i < 10; $i++) {
//Kezdőérték: NULL; amíg $i kisebb, mint 10, növeljük eggyel
        echo
$i . ' '; // Kiírja az aktuális $i értékét
}
?>

--------------------

 

Figyelem! Ha a második kifejezés is kimarad, a ciklusunk sose ér véget! Ebben az esetben szükségünk lesz a break; utasításra:

--------------------

<?php
for ( ; ; $i++) {
//Kezdőérték: NULL; nincs feltétel, viszont növeljük eggyel az $i-t
        echo
$i . ' '; // Kiírja az aktuális $i értékét
        if ($i > 9) {
// Ha az $i nagyobb, mint 9
                break;
// kitörés!
        }
}
?>

--------------------

Menjünk még tovább: hagyjuk el a harmadik kifejezést is! Észrevehetjük, hogy az $i értékét így már semmi se növeli, újabb végtelen ciklus veszély áll fenn. Ilyenkor a ciklus belsejében növelhetjük az értéket:

--------------------

<?php
for ( ; ; ) {
//Kezdőérték: NULL; nincs feltétel, nincs művelet
        echo $i . ' ';
// Kiírja az aktuális $i értékét
        if ($i > 9) {
// Ha az $i nagyobb, mint 9
                break;
// kitörés!
        }
$i++;
// Növeljük eggyel az $i-t
}
?>

--------------------

Az elhagyásos módszerek ugyanazt az eredményt produkálják, azonban figyeljünk oda egy fontos dologra: mivel a változót nem deklaráltuk, hanem futás közben jön létre, fontos biztonsági kockázatot jelent. A megoldás egyszerű: a ciklus kezdése előtt kapjon egy ellenőrzött kiindulóértéket: 

--------------------

<?php
$i = 0;
// Kezdőérték!
for ( ; ; ) {
       echo
$i;
       if ($i > 9) {
              break;
       }
$i++;
}
?>

--------------------

Megjegyzés
A for ciklusokat ugyanúgy egymásba ágyazhatjuk, mint az előző leckében tanult while ciklusokat!

 

A későbbiekben, amikor interaktív kapcsolatba lépünk a PHP programunkkal látni fogjuk, hogy milyen veszélyeket rejt magában a nem deklarált változó. Webes környezetben használt PHP alapú oldalak támadásának egyik klasszikus módjáról van szó - de ez jövőbeli tananyagok témája lesz.

-----------------------------------------------------------------------------------------------------

Feladatok

1. Írjunk egy for ciklust, ahol csak a páros természetes számokat soroljuk fel 0-tól 100-ig.

2. Írjuk le for ciklussal az angol ábécé kisbetűit; használjuk ki a string növelés módszerét!

3. For ciklust használva írjuk ki a természetes számokat tízes sorokba! Használjuk ki a vesszővel elválasztott kifejezéseket!

A bejegyzés trackback címe:

https://php-kezdoknek.blog.hu/api/trackback/id/tr637635556

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása