⊗ppPmLpFl 124 of 447 menu

Rad sa zastavicama (flag-ovima) u PHP-u

Sada ćemo naučiti da radimo sa zastavicama (flag-ovima). Zastavica (flag) je specijalna promenljiva koja može imati samo dve vrednosti: true i false. Pomoću zastavica mogu se rešavati zadaci koji proveravaju odsustvo nečega: na primer, može se proveriti da li u nizu postoji element sa određenom vrednošću. Hajde da započnemo.

Hajde da rešimo sledeći zadatak: dat je niz sa brojevima, treba proveriti da li u njemu postoji element sa vrednošću 3 ili ne. Ako postoji - ispisaćemo '+++', ako ne - ispisaćemo '---'.

Za početak, hajde da pokušamo da ispišemo '+++'. Za to ćemo proći kroz sve elemente našeg niza i if-om ćemo pitati - da li je trenutni element jednak vrednosti 3. Ako jeste - ispisaćemo '+++':

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

Ali naše rešenje nije baš dobro: jer ako u nizu bude ne jedna vrednost 3, nego nekoliko, onda će se '+++' ispisati nekoliko puta. Hajde da ispravimo naš niz (napravimo dva elementa sa vrednošću 3) i uverimo se u to:

<?php $arr = [1, 2, 3, 4, 3, 5]; foreach ($arr as $elem) { if ($elem === 3) { echo '+++'; // ispisaće se nekoliko puta } } ?>

Ispravimo problem: prekinimo petlju pomoću break, ako je element već pronađen:

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

Hajde sada da pokušamo da uradimo tako da, ako u nizu uopšte nema elemenata sa vrednošću 3, ispiše se '---'. Česta greška je dodati else našem if-u - u tom slučaju će se '---' ispisivati za sve elemente koji nisu 3:

<?php $arr = [1, 2, 3, 4, 5]; foreach ($arr as $elem) { if ($elem === 3) { echo '+++'; // ispisaće se na elementu 3 } else { echo '---'; // ispisaće se na elementima 1, 2, 4, 5 } } ?>

Dakle, ideja da se doda else - loša je ideja, ne funkcioniše. Za rešavanje zadataka ovog tipa (takvi zadaci se sreću dovoljno često) koriste se takozvane zastavice (flag-ovi).

Kao što je već pomenuto, zastavica (flag) je takva promenljiva, koja može imati dve vrednosti: true ili false.

Dakle, hajde da napravimo promenljivu flag sa ovakvim značenjem: ako je jednaka true, onda u nizu postoji element 3, a ako je false, onda takvog elementa nema.

Inicijalno ćemo postaviti promenljivu flag na vrednost false - to jest smatraćemo, da elementa 3 u nizu nema:

$arr = [1, 2, 3, 4, 5]; $flag = false; // smatramo da elementa 3 nema u nizu

Zatim ćemo pokrenuti petlju sa if-om onako kako smo to radili ranije. Ako petlja otkrije da u nizu postoji element 3 - onda ćemo postaviti promenljivu flag na vrednost true i izaći iz petlje pomoću break:

<?php $arr = [1, 2, 3, 4, 5]; $flag = false; // smatramo da elementa 3 nema u nizu foreach ($arr as $elem) { if ($elem === 3) { $flag = true; // element postoji - redefinišemo promenljivu $flag break; // izlazimo iz petlje } } ?>

Odgovor na pitanje, da li u nizu postoji 3 ili ne, možemo dati tek nakon petlje. I taj odgovor već imamo: nakon petlje promenljiva flag je mogla ostati false ili je mogla promeniti svoju vrednost na true, ako je petlja otkrila u nizu 3:

<?php $arr = [1, 2, 3, 4, 5]; $flag = false; foreach ($arr as $elem) { if ($elem === 3) { $flag = true; break; } } // ovde je promenljiva $flag jednaka ili true, ili false ?>

Sada nakon petlje možemo napraviti if, koji će pogledati promenljivu flag i ispisati na ekran '+++' ili '---':

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

Dat je niz:

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

Proverite da li u ovom nizu postoji element 'c'. Ako postoji - ispišite '+++', a ako ne - ispišite '---'.

Napišite kod koji će proveravati broj na to, da li je prost ili nije. Prost broj deli se samo sa jedinicom i sa samim sobom, i ne deli se drugim brojevima.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij