⊗ppPmLpFl 124 of 447 menu

Arbete med flaggor i PHP

Nu ska vi lära oss att arbeta med flaggor. En flagga är en speciell variabel som bara kan anta två värden: true och false. Med hjälp av flaggor kan man lösa uppgifter som kontrollerar frånvaron av något: till exempel kan man kontrollera att det i en array finns ett element med ett visst värde. Låt oss komma igång.

Låt oss lösa följande uppgift: given en array med nummer, kontrollera om det finns ett element med värdet 3 eller inte. Om det finns - skriv ut '+++', om inte - skriv ut '---'.

Låt oss först försöka skriva ut '+++'. För att göra detta, låt oss gå igenom alla element i vår array och med en if-sats fråga - är det aktuella elementet lika med värdet 3. Om det är lika - skriv ut '+++':

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

Men vår lösning är inte särskilt bra: för om det i arrayen inte finns ett värde 3, utan flera, så kommer '+++' att skrivas ut flera gånger. Låt oss ändra vår array (gör två element med värdet 3) och se till om detta:

<?php $arr = [1, 2, 3, 4, 3, 5]; foreach ($arr as $elem) { if ($elem === 3) { echo '+++'; // kommer att skrivas ut flera gånger } } ?>

Låt oss åtgärda problemet: avsluta loopen med hjälp av break, om elementet redan hittats:

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

Låt oss nu försöka göra så att, om det i arrayen inte finns några element med värdet 3 alls, så skrivs '---' ut. Ett vanligt misstag är att lägga till else till vår if-sats - i så fall kommer '---' att skrivas ut för alla element som inte är 3:

<?php $arr = [1, 2, 3, 4, 5]; foreach ($arr as $elem) { if ($elem === 3) { echo '+++'; // kommer att skrivas ut på elementet 3 } else { echo '---'; // kommer att skrivas ut på elementen 1, 2, 4, 5 } } ?>

Så, idén att lägga till else är en dålig idé, det fungerar inte. För att lösa uppgifter av denna typ (sådana uppgifter förekommer ganska ofta) använder man sig av så kallade flaggor.

Som nämnts ovan är en flagga en sådan variabel som kan anta två värden: true eller false.

Så, låt oss skapa en variabel flag med detta värde: om den är lika med true, så finns elementet 3 i arrayen, och om false, så finns det inget sådant element.

Inledningsvis sätter vi variabeln flag till värdet false - det vill säga vi antar att elementet 3 inte finns i arrayen:

$arr = [1, 2, 3, 4, 5]; $flag = false; // antar att elementet 3 inte finns i arrayen

Sedan startar vi en loop med en if-sats som vi gjorde tidigare. Om loopen upptäcker att det i arrayen finns ett element 3 - så sätter vi variabeln flag till värdet true och avslutar loopen med hjälp av break:

<?php $arr = [1, 2, 3, 4, 5]; $flag = false; // antar att elementet 3 inte finns i arrayen foreach ($arr as $elem) { if ($elem === 3) { $flag = true; // elementet finns - omdefiniera variabeln $flag break; // avsluta loopen } } ?>

Svaret på frågan, om det finns 3 i arrayen eller inte, kan vi bara ge efter loopen. Och det här svaret har vi redan: efter loopen kunde variabeln flag förbli false eller kunde ändra sitt värde till true, om loopen upptäckte 3 i arrayen:

<?php $arr = [1, 2, 3, 4, 5]; $flag = false; foreach ($arr as $elem) { if ($elem === 3) { $flag = true; break; } } // här är variabeln $flag antingen true eller false ?>

Nu kan vi efter loopen göra en if-sats som tittar på variabeln flag och skriver ut '+++' 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 '---'; } ?>

Given en array:

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

Kontrollera att det i denna array finns ett element 'c'. Om det finns - skriv ut '+++', och om inte - skriv ut '---'.

Skriv kod som kommer att kontrollera om ett nummer är primtal eller inte. Ett primtal är bara delbart med ett och med sig självt, och är inte delbart med andra nummer.

Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa