⊗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
Мы выкарыстоўваем cookie для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць