⊗ppPmLpFl 124 of 447 menu

Flagstrādāšana PHP

Tagad mēs iemācīsimies strādāt ar flagiem. Flags ir īpašs mainīgais, kas var iegūt tikai divas vērtības: true un false. Ar flagu palīdzību var atrisināt uzdevumus, kas pārbauda kaut kā neesamību: piemēram, var pārbaudīt, vai masīvā nav elementa ar noteiktu vērtību. Sāksim.

Atrisināsim šādu uzdevumu: dots masīvs ar skaitļiem, jāpārbauda, vai tajā ir elements ar vērtību 3 vai nav. Ja ir - izvadīsim '+++', ja nav - izvadīsim '---'.

Sākumā mēģināsim izvadīt '+++'. Lai to izdarītu, iziesim cauri visiem masīva elementiem un ar if noskaidrosim - vai pašreizējais elements ir vienāds ar vērtību 3. Ja ir vienāds - izvadīsim '+++':

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

Bet mūsu risinājums nav īsti labs: jo, ja masīvā būs nevis viena vērtība 3, bet vairākas, tad '+++' tiks izvadīts vairākas reizes. Labosim mūsu masīvu (izveidosim divus elementus ar vērtību 3) un par to pārliecināsimies:

<?php $arr = [1, 2, 3, 4, 3, 5]; foreach ($arr as $elem) { if ($elem === 3) { echo '+++'; // izvadīs vairākas reizes } } ?>

Izlabosim problēmu: pārtrauksim ciklu ar break, ja elements jau ir atrasts:

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

Tagad mēģināsim izdarīt tā, lai, ja masīvā vispār nav elementu ar vērtību 3, tiktu izvadīts '---'. Izplatīts pārpratums būs pievienot else mūsu if - šajā gadījumā '---' tiks izvadīts visiem elementiem, kas nav 3:

<?php $arr = [1, 2, 3, 4, 5]; foreach ($arr as $elem) { if ($elem === 3) { echo '+++'; // izvadīs uz elementa 3 } else { echo '---'; // izvadīs uz elementiem 1, 2, 4, 5 } } ?>

Tātad, ideja pievienot else - slikta ideja, nedarbojas. Lai atrisinātu šāda veida uzdevumus (tādi uzdevumi sastopami pietiekami bieži) izmanto tā sauktos flagus.

Kā jau minēts iepriekš, flags - ir tāds mainīgais, kas var iegūt divas vērtības: true vai false.

Tātad, izveidosim mainīgo flag ar šādu nozīmi: ja tas ir vienāds ar true, tad masīvā ir elements 3, bet ja false, tad šāda elementa nav.

Sākotnēji iestatīsim mainīgo flag uz vērtību false - tas ir, pieņemsim, ka elementa 3 masīvā nav:

$arr = [1, 2, 3, 4, 5]; $flag = false; // pieņemam, ka elementa 3 nav masīvā

Pēc tam palaidīsim ciklu ar if tā, kā mēs to darījām agrāk. Ja cikls atklās, ka masīvā ir elements 3 - tad iestatīsim mainīgo flag uz vērtību true un iziesim no cikla ar break:

<?php $arr = [1, 2, 3, 4, 5]; $flag = false; // pieņemam, ka elementa 3 nav masīvā foreach ($arr as $elem) { if ($elem === 3) { $flag = true; // elements ir - pārdefinēsim mainīgo $flag break; // iziesim no cikla } } ?>

Atbildi uz jautājumu, vai masīvā ir 3 vai nav, mēs varam dot tikai pēc cikla. Un šī atbilde mums jau ir: pēc cikla mainīgais flag varēja palikt false vai varēja mainīt savu vērtību uz true, ja cikls atklāja masīvā 3:

<?php $arr = [1, 2, 3, 4, 5]; $flag = false; foreach ($arr as $elem) { if ($elem === 3) { $flag = true; break; } } // šeit mainīgais $flag ir vienāds ar true vai false ?>

Tagad pēc cikla mēs varam izveidot if, kurš paskatīsies uz mainīgo flag un izvadīs ekrānā '+++' vai '---':

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

Dots masīvs:

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

Pārbaudiet, vai šajā masīvā ir elements 'c'. Ja ir - izvadiet '+++', ja nav - izvadiet '---'.

Uzrakstiet kodu, kas pārbaudīs skaitli, vai tas ir pirmskaitlis vai nē. Pirmskaitlis dalās tikai ar vieninieku un pats ar sevi, un nedalās ar citiem skaitļiem.

Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt