⊗ppPmLpFl 124 of 447 menu

Zászlók kezelése PHP-ben

Most megtanuljuk, hogyan kell dolgozni a zászlókkal. A zászló egy speciális változó, amely csak két értéket vehet fel: true és false. A zászlók segítségével megoldhatunk olyan feladatokat, amelyek valaminek a hiányát ellenőrzik: például ellenőrizhetjük, hogy egy tömbben nincs-e egy adott értékű elem. Kezdjük is el.

Oldjuk meg a következő feladatot: adott egy tömb számokkal, ellenőrizni kell, hogy van-e benne 3 értékű elem vagy sem. Ha van - írjuk ki a '+++' szöveget, ha nincs - írjuk ki a '---' szöveget.

Először próbáljuk meg kiírni a '+++' szöveget. Ehhez menjünk végig a tömb összes elemén és egy feltétellel kérdezzük meg - egyenlő-e az aktuális elem a 3 értékkel. Ha egyenlő - írjuk ki a '+++' szöveget:

<?php $arr = [1, 2, 3, 4, 5]; foreach ($arr as $elem) { if ($elem === 3) { echo '+++'; } } ?>

De a megoldásunk nem túl jó: hiszen ha a tömbben nem egy 3 érték lesz, hanem több, akkor a '+++' szöveg többször fog kiíródni. Módosítsuk a tömbünket (tegyünk két 3 értékű elemet bele), és győződjünk meg erről:

<?php $arr = [1, 2, 3, 4, 3, 5]; foreach ($arr as $elem) { if ($elem === 3) { echo '+++'; // többször fog kiíródni } } ?>

Javítsuk a problémát: szakítsuk meg a ciklust a break utasítással, ha az elemet már megtaláltuk:

<?php $arr = [1, 2, 3, 4, 3, 5]; foreach ($arr as $elem) { if ($elem === 3) { echo '+++'; break; // megszakítjuk a ciklust } } ?>

Most próbáljuk meg úgy megoldani, hogy ha a tömben egyáltalán nincs 3 értékű elem, akkor a '---' szöveg jelenjen meg. Gyakori tévedés, ha hozzáadunk egy else ágat a feltételünkhöz - ebben az esetben a '---' szöveg minden olyan elemre kiíródik, amely nem 3:

<?php $arr = [1, 2, 3, 4, 5]; foreach ($arr as $elem) { if ($elem === 3) { echo '+++'; // a 3-as elemnél írja ki } else { echo '---'; // az 1, 2, 4, 5 elemeknél írja ki } } ?>

Tehát az else hozzáadásának ötlete - rossz ötlet, nem működik. Az ilyen típusú feladatok megoldására (az ilyen feladatok elég gyakoriak) használják az úgynevezett zászlókat.

Ahogy fentebb már említettük, a zászló - egy olyan változó, amely csak két értéket vehet fel: true vagy false.

Tehát készítsünk egy flag változót a következő jelentéssel: ha egyenlő true-val, akkor a tömbben van 3 értékű elem, ha pedig false, akkor nincs ilyen elem.

Kezdetben állítsuk a flag változót false értékre - azaz feltételezzük, hogy a 3 értékű elem nincs a tömbben:

$arr = [1, 2, 3, 4, 5]; $flag = false; // feltételezzük, hogy a 3-as elem nincs a tömbben

Ezután indítsuk el a ciklust a feltétellel úgy, ahogy korábban tettük. Ha a ciklus detektálja, hogy a tömbben van 3 értékű elem - akkor állítsuk a flag változót true értékre és lépjünk ki a ciklusból a break utasítással:

<?php $arr = [1, 2, 3, 4, 5]; $flag = false; // feltételezzük, hogy a 3-as elem nincs a tömbben foreach ($arr as $elem) { if ($elem === 3) { $flag = true; // az elem megtalálva - újradefiniáljuk a $flag változót break; // kilépünk a ciklusból } } ?>

A kérdésre, hogy van-e a tömbben 3 értékű elem vagy sem, csak a ciklus után tudunk válaszolni. És ez a válasz már megvan: a ciklus után a flag változó vagy false marad, vagy az értéke true-ra változhat, ha a ciklus detektált a tömbben 3 értékű elemet:

<?php $arr = [1, 2, 3, 4, 5]; $flag = false; foreach ($arr as $elem) { if ($elem === 3) { $flag = true; break; } } // itt a $flag változó vagy true, vagy false ?>

Most a ciklus után készíthetünk egy feltételt, amely ránéz a flag változóra, és kiírja a '+++' vagy '---' szöveget:

<?php $arr = [1, 2, 3, 4, 5]; $flag = false; foreach ($arr as $elem) { if ($elem === 3) { $flag = true; break; } } if ($flag === true) { echo '+++'; } else { echo '---'; } ?>

Adott egy tömb:

<?php $arr = ['a', 'b', 'c', 'd', 'e']; ?>

Ellenőrizd, hogy ebben a tömbben van-e 'c' értékű elem. Ha van - írd ki a '+++' szöveget, ha nincs - írd ki a '---' szöveget.

Írj kódot, amely ellenőrzi, hogy egy szám prím-e vagy sem. Egy prímszám csak eggyel és önmagával osztható, és más számokkal nem osztható.

Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás