⊗ppPmCdBNM 100 of 447 menu

Breakin valinnaisuus PHP:ssä

Komento break on valinnainen. Ilman sitä case -lohkojen käyttäytyminen on kuitenkin odottamatonta. Katsotaanpa esimerkkiä. Oletetaan, että meillä on seuraava koodi:

<?php $num = 1; switch ($num) { case 1: echo 1; break; case 2: echo 2; break; case 3: echo 3; break; } ?>

Poistetaan siitä kaikki break, ja muuttujaan $num aluksi numero 3.

Toistaiseksi kaikki toimii kuten ennenkin:

<?php $num = 3; // oletetaan, että tässä on numero 3 switch ($num) { case 1: echo 1; case 2: echo 2; case 3: echo 3; } // Suorituksen jälkeen koodi tulostaa 3 - kaikki hyvin ?>

Kirjoitetaan nyt muuttujaan $num numero 2. Tässä tapauksessa odotetusti suoritetaan case 2, ja sitten odottamatta myös case 3:

<?php $num = 2; switch ($num) { case 1: echo 1; case 2: echo 2; case 3: echo 3; } // Suorituksen jälkeen koodi tulostaa 2 ja sitten 3 ?>

Jos muuttujaan $num kirjoitetaan numero 1, niin kaikki case -rakenteet suoritetaan:

<?php $num = 1; switch ($num) { case 1: echo 1; case 2: echo 2; case 3: echo 3; } // Suorituksen jälkeen koodi tulostaa 1, sitten 2 ja sitten 3 ?>

Eli käy ilmi, että kun break puuttuu, suunnitellun case:n suorituksen jälkeen, suoritetaan myös kaikki sen alapuolella olevat case:t. Joskus tätä ominaisuutta hyödynnetään ongelmien ratkaisemisessa.

Seuraavassa esimerkissä, jos muuttujan $num arvo on 1 tai 2, niin muuttujaan $res kirjoitetaan 'a'. Jos taas muuttujan $num arvo on 3, niin muuttujaan $res kirjoitetaan 'b':

<?php $num = 1; switch ($num) { case 1: case 2: $res = 'a'; break; case 3: $res = 'b'; break; } echo $res; ?>

Yllä kirjoitin, että joskus tätä ominaisuutta käytetään, mutta en yleisesti ottaen suosittele sitä käyttämään, koska koodista tulee epäselvää.

On selvempi ratkaista tällainen tehtävä if-lauseilla:

<?php $num = 1; if ($num == 1 or $num == 2) { $res = 'a'; } if ($num == 3) { $res = 'b'; } echo $res; ?>
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ää