⊗ppPmLpFl 124 of 447 menu

Práce s příznaky v PHP

Nyní se naučíme pracovat s příznaky. Příznak je speciální proměnná, která může nabývat pouze dvou hodnot: true a false. Pomocí příznaků lze řešit úkoly, které ověřují nepřítomnost něčeho: lze například zkontrolovat, že v poli není prvek s určitou hodnotou. Pojďme začít.

Pojďme vyřešit následující úkol: je dáno pole s čísly, je třeba zkontrolovat, zda v něm je prvek s hodnotou 3 nebo ne. Pokud ano - vypište '+++', pokud ne - vypište '---'.

Nejprve zkusme vypsat '+++'. K tomu projdeme všechny prvky našeho pole a podmínkou se zeptáme - je aktuální prvek roven hodnotě 3. Pokud ano - vypíšeme '+++':

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

Ale naše řešení není nejlepší: pokud v poli bude ne jedna hodnota 3, ale několik, pak se '+++' vypíše několikrát. Pojďme upravit naše pole (vytvořme dva prvky s hodnotou 3) a přesvědčme se o tom:

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

Pojďme problém opravit: ukončeme cyklus pomocí break, pokud byl prvek již nalezen:

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

Nyní zkusme udělat to, aby, pokud v poli vůbec nejsou prvky s hodnotou 3, vypsalo '---'. Častým omylem je přidat else k naší podmínce - v tomto případě se '---' bude vypisovat pro všechny prvky, které nejsou 3:

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

Takže, nápad přidat else - je špatný nápad, nefunguje. Pro řešení úkolů tohoto druhu (takové úkoly se vyskytují dostatečně často) se používají takzvané příznaky.

Jak již bylo zmíněno výše, příznak - je taková proměnná, která může nabývat dvou hodnot: true nebo false.

Takže, pojďme vytvořit proměnnou flag s touto hodnotou: pokud je rovna true, pak v poli je prvek 3, a pokud false, pak takový prvek není.

Nejprve nastavme proměnnou flag na hodnotu false - to znamená, že budeme předpokládat, že prvek 3 v poli není:

$arr = [1, 2, 3, 4, 5]; $flag = false; // předpokládáme, že prvek 3 v poli není

Poté spustíme cyklus s podmínkou tak, jak jsme to dělali dříve. Pokud cyklus zjistí, že v poli je prvek 3 - pak nastavíme proměnnou flag na hodnotu true a ukončíme cyklus pomocí break:

<?php $arr = [1, 2, 3, 4, 5]; $flag = false; // předpokládáme, že prvek 3 v poli není foreach ($arr as $elem) { if ($elem === 3) { $flag = true; // prvek existuje - přenastavíme proměnnou $flag break; // ukončíme cyklus } } ?>

Odpověď na otázku, zda je v poli 3 nebo ne, můžeme dát až po cyklu. A tuto odpověď již máme: po cyklu proměnná flag mohla zůstat false nebo mohla změnit svou hodnotu na true, pokud cyklus objevil v poli 3:

<?php $arr = [1, 2, 3, 4, 5]; $flag = false; foreach ($arr as $elem) { if ($elem === 3) { $flag = true; break; } } // zde je proměnná $flag rovna buď true, nebo false ?>

Nyní po cyklu můžeme vytvořit podmínku, která se podívá na proměnnou flag a vypíše na obrazovku '+++' nebo '---':

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

Je dáno pole:

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

Zkontrolujte, zda v tomto poli je prvek 'c'. Pokud ano - vypište '+++', a pokud ne - vypište '---'.

Napište kód, který bude kontrolovat, zda je číslo prvočíslo nebo ne. Prvočíslo je dělitelné pouze jedničkou a samo sebou, a není dělitelné jinými čísly.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout