⊗ppPmLpFl 124 of 447 menu

Lippujen käsittely PHP:ssä

Nyt opimme käsittelemään lippuja. Lippu on erityinen muuttuja, joka voi saada vain kaksi arvoa: true ja false. Lippuja käyttämällä voidaan ratkaista tehtäviä, jotka tarkistavat jonkin puuttumisen: esimerkiksi voidaan tarkistaa, että taulukossa ei ole alkiota tietyllä arvolla. Aloitetaan.

Ratkaistaan seuraava tehtävä: annettu taulukko luvuilla, on tarpeen tarkistaa, onko siinä alkio arvolla 3 vai ei. Jos on, tulostetaan '+++', jos ei - tulostetaan '---'.

Aluksi yritetään tulostaa '+++'. Tätä varten käydään läpi kaikki taulukkomme alkiot ja if-lauseella kysytään - onko nykyinen alkio yhtä suuri kuin arvo 3. Jos on, tulostetaan '+++':

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

Mutta ratkaisumme ei ole kovin hyvä: sillä jos taulukossa on useita arvoja 3, niin '+++' tulostuu useita kertoja. Muutetaan taulukkoamme (tehdään kaksi alkiota arvolla 3) ja varmistutaan tästä:

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

Korjataan ongelma: keskeytetään silmukka break:llä, jos alkio on jo löytynyt:

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

Yritetään nyt tehdä niin, että jos taulukossa ei ole lainkaan alkioita arvolla 3, tulostuisi '---'. Yleinen väärinkäsitys on lisätä else if-lauseeseemme - tässä tapauksessa '---' tulostuu kaikille alkioille, jotka eivät ole 3:

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

Siis, idea lisätä else - huono idea, ei toimi. Tällaisen tyyppisten tehtävien ratkaisemiseen (tällaisia tehtäviä esiintyy usein) käytetään niin kutsuttuja lippuja.

Kuten edellä mainittiin, lippu on sellainen muuttuja, joka voi saada kaksi arvoa: true tai false.

Tehdään muuttuja flag seuraavalla arvolla: jos se on yhtä suuri kuin true, niin taulukossa on alkio 3, ja jos false, niin sellaista alkiota ei ole.

Aluksi asetetaan muuttuja flag arvoon false - eli oletetaan, että alkiota 3 ei ole taulukossa:

$arr = [1, 2, 3, 4, 5]; $flag = false; // oletetaan, että alkiota 3 ei ole taulukossa

Sitten käynnistetään silmukka if-lauseella kuten teimme aiemmin. Jos silmukka huomaa, että taulukossa on alkio 3 - niin asetetaan muuttuja flag arvoon true ja poistutaan silmukasta break:llä:

<?php $arr = [1, 2, 3, 4, 5]; $flag = false; // oletetaan, että alkiota 3 ei ole taulukossa foreach ($arr as $elem) { if ($elem === 3) { $flag = true; // alkio on olemassa - määritellään muuttuja $flag uudelleen break; // poistutaan silmukasta } } ?>

Vastauksen kysymykseen, onko taulukossa 3 vai ei, voimme antaa vasta silmukan jälkeen. Ja tämä vastaus meillä on jo: silmukan jälkeen muuttuja flag on saattanut pysyä false tai saattanut vaihtaa arvokseen true, jos silmukka havaitsi taulukossa 3:

<?php $arr = [1, 2, 3, 4, 5]; $flag = false; foreach ($arr as $elem) { if ($elem === 3) { $flag = true; break; } } // tässä muuttuja $flag on joko true tai false ?>

Nyt silmukan jälkeen voimme tehdä if-lauseen, joka katsoo muuttujaan flag ja tulostaa näytölle '+++' tai '---':

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

Annettu taulukko:

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

Tarkista, onko tässä taulukossa alkio 'c'. Jos on - tulosta '+++', ja jos ei - tulosta '---'.

Kirjoita koodi, joka tarkistaa onko luku alkuluku vai ei. Alkuluku on jaollinen vain ykkösellä ja itsellään, eikä ole jaollinen muilla luvuilla.

Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää