⊗ppPmLpFl 124 of 447 menu

Работа с флагове в PHP

Сега ще се научим да работим с флагове. Флагът е специална променлива, която може да приема само две стойности: true и false. С помощта на флагове могат да се решават задачи, проверяващи липсата на нещо: например, може да се провери, че в масив няма елемент с определена стойност. Нека да започнем.

Нека решим следната задача: даден е масив с числа, трябва да се провери дали в него има елемент със стойност 3 или не. Ако има - ще изведем '+++', ако няма - ще изведем '---'.

Като начало нека се опитаме да изведем '+++'. За това ще обходим всички елементи на нашия масив и с условна конструкция ще питаме - равен ли е текущият елемент на стойността 3. Ако е равен - ще изведем '+++':

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

Но нашето решение не е много добро: защото ако в масива има не една стойност 3, а няколко, то '+++' ще се изведе няколко пъти. Нека поправим нашия масив (ще направим два елемента със стойност 3) и ще се убедим в това:

<?php $arr = [1, 2, 3, 4, 3, 5]; foreach ($arr as $elem) { if ($elem === 3) { echo '+++'; // ще изведе няколко пъти } } ?>

Нека поправим проблема: ще прекратим цикъла с помощта на break, ако елементът вече е намерен:

<?php $arr = [1, 2, 3, 4, 3, 5]; foreach ($arr as $elem) { if ($elem === 3) { echo '+++'; break; // прекратяваме цикъла } } ?>

Сега нека се опитаме да направим така, че, ако в масива изобщо няма елементи със стойност 3, да се извежда '---'. Често срещано заблуждение е да се добави else към нашата условна конструкция - в този случай '---' ще се извежда за всички елементи, които не са 3:

<?php $arr = [1, 2, 3, 4, 5]; foreach ($arr as $elem) { if ($elem === 3) { echo '+++'; // ще изведе на елемент 3 } else { echo '---'; // ще изведе на елементи 1, 2, 4, 5 } } ?>

И така, идеята да добавим else - е лоша идея, не работи. За решаване на задачи от този тип (такива задачи се срещат достатъчно често) се използват така наречените флагове.

Както вече беше споменато по-горе, флагът е такава променлива, която може да приема две стойности: true или false.

И така, нека направим променлива flag с такова значение: ако тя е равна на true, тогава в масива има елемент 3, а ако е false, то такъв елемент няма.

Първоначално ще зададем променливата flag на стойност false - тоест ще считаме, че елемент 3 няма в масива:

$arr = [1, 2, 3, 4, 5]; $flag = false; // считаме, че елемент 3 го няма в масива

След това ще стартираме цикъл с условна конструкция така, както го правехме преди. Ако цикълът открие, че в масива има елемент 3 - тогава ще зададем променливата flag на стойност true и ще излезем от цикъла с break:

<?php $arr = [1, 2, 3, 4, 5]; $flag = false; // считаме, че елемент 3 го няма в масива foreach ($arr as $elem) { if ($elem === 3) { $flag = true; // елементът има - преназначаваме променливата $flag break; // излизаме от цикъла } } ?>

Отговорът на въпроса, дали в масива има 3 или не, можем да дадем само след цикъла. И този отговор вече го имаме: след цикъла променливата flag може да е останала false или може да е сменила стойността си на true, ако цикълът е открил в масива 3:

<?php $arr = [1, 2, 3, 4, 5]; $flag = false; foreach ($arr as $elem) { if ($elem === 3) { $flag = true; break; } } // тук променливата $flag е равна или на true, или на false ?>

Сега след цикъла можем да направим условна конструкция, която ще погледне променливата flag и ще изведе на екрана '+++' или '---':

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

Даден е масив:

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

Проверете дали в този масив има елемент 'c'. Ако има - изведете '+++', а ако няма - изведете '---'.

Напишете код, който ще проверява числото дали е просто или не. Простото число се дели само на единица и на себе си, и не се дели на други числа.

Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικά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
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне