Kirjoittaja: Antti Laaksonen (2011).
Ohjelmoinnissa tulee usein tarvetta suorittaa erilainen koodi tilanteesta riippuen. Esimerkiksi jos käyttäjä antaa oikean salasanan, hän pääsee kirjautumaan sisään, mutta jos salasana on väärä, tulee virheilmoitus.
Tässä oppaassa käsiteltävän if-rakenteen avulla koodin toiminnan saa riippumaan muuttujista. Ideana on asettaa koodin suoritukselle ehtoja, joissa on mukana muuttujien arvoja. Esimerkiksi ehto $salasana == "kissa"
vaatii, että muuttujan $salasana
arvona on "kissa".
if-rakenteen yksinkertaisin muoto on seuraava:
if (ehto) { koodi }
Ideana on, että ohjelma suorittaa if-rakenteen sisällä olevan koodin vain silloin, kun alussa oleva ehto pitää paikkansa. Seuraava esimerkki selventää asiaa:
Nyt jos muuttujan $nimi
sisältö on "Aapeli", koodi tulostaa viestin "Terve, vanha kuoma!" Jos sisältö on jotain muuta, koodi ei tee mitään.
Lisäämällä if-rakenteeseen else-osan voi myös kertoa, mitä koodin tulee tehdä silloin, kun ehto ei pidä paikkaansa:
if (ehto) { koodi } else { koodi }
Tätä vastaa seuraava esimerkki:
Nyt koodi tulostaa viestin "Kuka kumma olet...", jos muuttujassa $nimi
on jotain muuta kuin "Aapeli".
Laajin if-rakenteen muoto on seuraava:
if (ehto) { koodi } elseif (ehto) { koodi } elseif (ehto) { koodi ... } else { koodi }
Tässä suoritetaan ensimmäinen koodi, jota vastaava ehto pitää paikkansa. Jos mikään ehdoista ei pitä paikkansa, suoritetaan else-osassa oleva koodi. Tarvittaessa else-osa voi myös puuttua lopusta.
Seuraava esimerkki esittelee if-rakenteen laajinta muotoa:
if ($nimi == "Aapeli") { echo "Terve, vanha kuoma!"; } elseif ($nimi == "Maija") { echo "Heisulivei!"; } elseif ($nimi == "Uolevi") { echo "Tsaukki, taukki!"; } else { echo "Kuka kumma olet..."; }
Koodi tervehtii Aapelia, Maijaa ja Uolevia omilla tavoillaan. Jos käyttäjän nimi ei ole mikään näistä kolmesta, koodi tulostaa tekstin "Kuka kumma olet..."
Tavallisimmat ehdot ovat seuraavat:
ehto | merkitys |
---|---|
A == B | A on sama kuin B |
A != B | A ei ole sama kuin B |
A <> B | A ei ole sama kuin B |
Merkinnät <>
ja !=
tarkoittavat täysin samaa.
Lukuarvoihin liittyvät myös seuraavat ehdot:
ehto | merkitys |
---|---|
A < B | A on pienempi kuin B |
A <= B | A on pienempi tai sama kuin B |
A > B | A on suurempi kuin B |
A >= B | A on suurempi tai sama kuin B |
Merkintä &&
vaatii, että kaksi ehtoa pitävät molemmat paikkansa. Esimerkiksi ehto $tunnus == "aapeli" && $salasana == "kissa"
vaatii, että tunnus on "aapeli" ja salasana on "kissa".
Merkintä ||
vaatii, että jompikumpi tai molemmat kahdesta ehdosta pitävät paikkansa. Esimerkiksi ehto $ika < 0 || $ika > 120
vaatii, että ikä on alle 0 tai yli 120.
Merkintä !
muuttaa ehdon käänteiseksi. Esimerkiksi ehto !($nimi == "aapeli")
tarkoittaa samaa kuin ehto $nimi != "aapeli"
.
Joskus täytyy huomioida myös vertailtavan arvon tyyppi, jolloin tarvitaan seuraavia ehtoja:
ehto | merkitys |
---|---|
A === B | A on sama ja samaa tyyppiä kuin B |
A !== B | A ei ole täysin sama kuin B |
Esimerkiksi ehto 0 == "0"
on tosi, koska molemmat arvot ovat nollia, mutta ehto 0 === "0"
on epätosi, koska 0
on luku ja "0"
on teksti. Vastaavasti 0 == false
on tosi, koska 0
voidaan tulkita totuusarvoksi false
, mutta 0 === false
on epätosi, koska 0
on luku ja false
on totuusarvo.
Seuraavat esimerkit selventävät, miten ehtoja muodostetaan käytännössä.
Seuraava esimerkki kysyy käyttäjältä ikää ja tarkistaa, että se on järkevä (vähintään 0 ja korkeintaan 120).
<!DOCTYPE html> <html> <head> <title>Ikätarkistus</title> </head> <body> <form action="ikatarkistus.php" method="post"> Kuinka vanha olet? <input type="text" name="ika"> <br> <input type="submit" value="Lähetä"> </form> </body> </html>
Koodi tarkistaa ensin, onko muuttujassa $ika
liian pieni tai liian suuri arvo. Jos ei ole, niin arvon täytyy olla sopiva.
<?php $ika = $_POST["ika"]; if ($ika < 0) { echo "Et voi olla alle 0-vuotias!"; } elseif ($ika > 120) { echo "Et voi olla yli 120-vuotias!"; } else { echo "Kiitos tiedosta!"; } ?>
Seuraava esimerkki kysyy käyttäjältä tunnuksen ja salasanan. Jos tunnus on "aapeli" ja salasana on "kissa", koodi tervehtii käyttäjää. Huomaa lomakkeessa oleva password-tyyppinen kenttä, jonka ansiosta kirjoitettu salasana ei näy selaimessa.
<!DOCTYPE html> <html> <head> <title>Tunnus ja salasana</title> </head> <body> <form action="salasana.php" method="post"> Tunnus: <input type="text" name="tunnus"> <br> Salasana: <input type="password" name="salasana"> <br> <input type="submit" value="Kirjaudu"> </form> </body> </html>
Nyt if-rakenteen ehto vaatii, että muuttujassa $tunnus
on merkkijono "aapeli" ja muuttujassa $salasana
on merkkijono "kissa":
Huomio! Kommentoi tässä ainoastaan tämän oppaan hyviä ja huonoja puolia. Älä kirjoita muita kysymyksiä tähän. Jos koodisi ei toimi tai tarvitset muuten vain apua ohjelmoinnissa, lähetä viesti keskusteluun.