⊗ppPmLpFl 124 of 447 menu

Arbejde med flag i PHP

Nu skal vi lære at arbejde med flag. Et flag er en speciel variabel, som kun kan antage to værdier: true og false. Med flag kan man løse opgaver, der kontrollerer fravær af noget: for eksempel kan man kontrollere, at der i et array ikke er noget element med en bestemt værdi. Lad os komme i gang.

Lad os løse følgende opgave: givet et array med tal, skal du kontrollere, om der i det er et element med værdien 3 eller ej. Hvis der er - udskriv '+++', hvis ikke - udskriv '---'.

Lad os først prøve at udskrive '+++'. For at gøre dette gennemgår vi alle elementer i vores array og med en if vil vi spørge - er det aktuelle element lig med værdien 3. Hvis det er lig - udskriver vi '+++':

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

Men vores løsning er ikke særlig god: for hvis der i arrayet ikke er én værdi 3, men flere, så vil '+++' blive udskrevet flere gange. Lad os rette vores array (lad os lave to elementer med værdien 3) og overbevise os selv om dette:

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

Lad os rette problemet: vi afslutter loopet ved hjælp af break, hvis elementet allerede er fundet:

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

Lad os nu prøve at gøre det sådan, at hvis der slet ikke er nogen elementer med værdien 3 i arrayet, udskrives '---'. En udbredt misforståelse vil være at tilføje else til vores if - i dette tilfælde vil '---' blive udskrevet for alle elementer, der ikke er 3:

<?php $arr = [1, 2, 3, 4, 5]; foreach ($arr as $elem) { if ($elem === 3) { echo '+++'; // udskrives på element 3 } else { echo '---'; // udskrives på elementer 1, 2, 4, 5 } } ?>

Så ideen om at tilføje else - er en dårlig ide, den virker ikke. For at løse opgaver af denne type (sådanne opgaver forekommer ret hyppigt) bruger man såkaldte flag.

Som nævnt ovenfor, er et flag en sådan variabel, som kun kan antage to værdier: true eller false.

Så lad os lave en variabel flag med følgende betydning: hvis den er lig true, så er der et element 3 i arrayet, og hvis false, så er der ikke sådan et element.

Indledningsvis sætter vi variablen flag til værdien false - det vil sige, vi antager, at der ikke er noget element 3 i arrayet:

$arr = [1, 2, 3, 4, 5]; $flag = false; // antager, at element 3 ikke er i arrayet

Derefter starter vi et loop med en if, som vi gjorde det før. Hvis loopet opdager, at der i arrayet er et element 3 - så sætter vi variablen flag til værdien true og forlader loopet med break:

<?php $arr = [1, 2, 3, 4, 5]; $flag = false; // antager, at element 3 ikke er i arrayet foreach ($arr as $elem) { if ($elem === 3) { $flag = true; // elementet findes - omdefinerer variablen $flag break; // forlader loopet } } ?>

Svaret på spørgsmålet, om der er 3 i arrayet eller ej, kan vi kun give efter loopet. Og dette svar har vi allerede: efter loopet kunne variablen flag være forblevet false eller kunne have skiftet sin værdi til true, hvis loopet opdagede 3 i arrayet:

<?php $arr = [1, 2, 3, 4, 5]; $flag = false; foreach ($arr as $elem) { if ($elem === 3) { $flag = true; break; } } // her er variablen $flag lig med enten true eller false ?>

Nu kan vi efter loopet lave en if, som vil se på variablen flag og udskrive på skærmen '+++' eller '---':

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

Givet et array:

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

Kontroller, om der i dette array er et element 'c'. Hvis der er - udskriv '+++', og hvis ikke - udskriv '---'.

Skriv en kode, der vil kontrollere et tal for, om det er primtal eller ej. Et primtal er kun deleligt med ett og med sig selv, og er ikke deleligt med andre tal.

Dansk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDeutschΕλληνικά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
Vi bruger cookies til webstedets funktion, analyse og personalisering. Behandling af data foregår i henhold til Fortrolighedspolitikken.
accepter alle tilpas afvis