⊗ppPmLpFl 124 of 447 menu

Práca s flagmi v PHP

Teraz sa naučíme pracovať s flagmi. Flag je špeciálna premenná, ktorá môže nadobúdať iba dve hodnoty: true a false. Pomocou flagov môžeme riešiť úlohy, ktoré overujú neprítomnosť niečoho: napríklad môžeme overiť, či v poli nie je prvok s určitou hodnotou. Poďme na to.

Poďme vyriešiť nasledujúcu úlohu: dané pole s číslami, je potrebné overiť, či sa v ňom nachádza prvok s hodnotou 3 alebo nie. Ak áno - vypíšeme '+++', ak nie - vypíšeme '---'.

Na začiatok skúsme vypísať '+++'. Preto prejdeme všetky prvky nášho poľa a pomocou ifu sa budeme pýtať - je aktuálny prvok rovný hodnote 3. Ak áno - vypíšeme '+++':

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

Naše riešenie však nie je veľmi dobré: pretože ak v poli bude nie jedna hodnota 3, ale niekoľko, tak '+++' sa vypíše niekoľkokrát. Poďme opraviť naše pole (urobme dva prvky s hodnotou 3) a presvedčíme sa o tom:

<?php $arr = [1, 2, 3, 4, 3, 5]; foreach ($arr as $elem) { if ($elem === 3) { echo '+++'; // vypíše niekoľkokrát } } ?>

Opravme problém: ukončíme cyklus pomocou break, ak už bol prvok nájdený:

<?php $arr = [1, 2, 3, 4, 3, 5]; foreach ($arr as $elem) { if ($elem === 3) { echo '+++'; break; // ukončíme cyklus } } ?>

Poďme sa teraz pokúsiť urobiť to, aby, ak v poli nie sú vôbec žiadne prvky s hodnotou 3, vypísalo sa '---'. Bežnou chybou je pridať else k nášmu ifu - v takom prípade sa '---' bude vypisovať pre všetky prvky, ktoré nie sú 3:

<?php $arr = [1, 2, 3, 4, 5]; foreach ($arr as $elem) { if ($elem === 3) { echo '+++'; // vypíše na prvku 3 } else { echo '---'; // vypíše na prvkoch 1, 2, 4, 5 } } ?>

Takže, nápad pridať else - je zlý nápad, nefunguje. Na riešenie úloh tohto typu (takéto úlohy sa vyskytujú dosť často) sa používajú takzvané flagy.

Ako už bolo spomenuté vyššie, flag je taká premenná, ktorá môže nadobúdať dve hodnoty: true alebo false.

Takže, urobme premennú flag s takouto hodnotou: ak je rovná true, tak v poli je prvok 3, a ak false, tak taký prvok nie je.

Spočiatku nastavme premennú flag na hodnotu false - teda budeme predpokladať, že prvok 3 v poli nie je:

$arr = [1, 2, 3, 4, 5]; $flag = false; // predpokladáme, že prvok 3 nie je v poli

Potom spustíme cyklus s ifom tak, ako sme to robili predtým. Ak cyklus zistí, že v poli je prvok 3 - tak nastavíme premennú flag na hodnotu true a ukončíme cyklus pomocou break:

<?php $arr = [1, 2, 3, 4, 5]; $flag = false; // predpokladáme, že prvok 3 nie je v poli foreach ($arr as $elem) { if ($elem === 3) { $flag = true; // prvok je - predefinujeme premennú $flag break; // ukončíme cyklus } } ?>

Odpoveď na otázku, či je v poli 3 alebo nie, môžeme dať až po cykle. A túto odpoveď už máme: po cykle premenná flag mohla zostať false alebo mohla zmeniť svoju hodnotu na true, ak cyklus objavil v poli 3:

<?php $arr = [1, 2, 3, 4, 5]; $flag = false; foreach ($arr as $elem) { if ($elem === 3) { $flag = true; break; } } // tu je premenná $flag rovná buď true, alebo false ?>

Teraz môžeme po cykle urobiť if, ktorý sa pozrie na premennú flag a vypíše na obrazovku '+++' alebo '---':

<?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 '---'; } ?>

Dané pole:

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

Overte, či v tomto poli je prvok 'c'. Ak áno - vypíšte '+++', a ak nie - vypíšte '---'.

Napíšte kód, ktorý bude overovať, či je číslo prvočíslo alebo nie. Prvočíslo je deliteľné iba jednotkou a sebou samým, a nie je deliteľné inými číslami.

Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť