Erilaisten valintojen toteuttamiseen PHP:ssä erilaisia if-lauseita ja switch..case-lause.
Valintoja suoritetaan ennalta asetettujen ehtojen mukaan, esimerkiksi:
Matti vie Maijan elokuviin, jos hänellä on rahaa 32 euroa. Matti tarjoaa lisäksi kahvit kahvilassa, jos hänellä on enemmän kuin 50 euroa. Muutoin Matti ja Maija juovat kahvinsa kotona.
if-lause muodostuu seuraavasti:
if (ehto) {
tehtävät lauseet_1; tehtävät lauseet_2;}
if-lauseessa tutkitaan ehto ja mikäli ehto on tosi (1), suoritetaan lause. Mikäli ehto on epätosi (0), ohjelma siirtyy
seuraavaan suoritettavaan lauseeseen.
1.Esimerkki. Lasketaan if-lauseen ehdossa yhteen luku1 ja luku2. Summan perusteella tulostuu jokin kolmesta tekstistä.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<style>
.vari2{
color: Maroon;
}
</style>
</head>
<body>
<div class="vari2">
<?php
$luku1 = 12;
$luku2 = 15;
if ($luku1+$luku2 < "20")
echo "Luku on alle 20";
if ($luku1+$luku2 == "27")
echo "Luku on tasan 27";
if ($luku1+$luku2 > "30")
echo "Luku on yli 30";
?>
</div>
</body>
</html>
Tulos www-sivulla:
Tee PHP-koodaus if-lauseilla joka antaa kokonaispisteitä vastaavan arvosanan seuraavasti:
Kok.pisteet - Arvosana
0 - 118 => 0
119 - 212 => 1
213 - 305 => 2
306 - 400 => 3
Huom ! Esim. 119.1 pisteellä arvosana on 1, 212.1 pisteellä arvosana on 2 jne.
Muokkaa oppaan Muuttujat-kohdan 11-tehtävä antamaan yhteispisteiden mukaan arvosanat taulukkoon:
Pisterajat arvosanoille:
jos pisteet pienempi kuin 120 -> arvosana on 0
jos pisteet on suurempi tai yhtasuuri 120 JA pienempi kuin 175,9 -> arvosana on 1
jos pisteet on suurempi tai yhtasuuri 176 JA pienempi kuin 231,9 -> arvosana on 2
jos pisteet on suurempi tai yhtasuuri 232 JA pienempi kuin 287,9 -> arvosana on 3
jos pisteet on suurempi tai yhtasuuri 288 JA pienempi kuin 343,9 -> arvosana on 4
jos pisteet on suurempi tai yhtasuuri 344 JA pienempi tai yhtäsuuri kuin 400 -> arvosana on 5
Huomaa myös !
Pisteitä voi olla myös yli 400, eli yllä olevista ehdoista puuttuu jotain ?
if-lauseen ehdon toteutuessa voidaan suorittaa yksi lause tai useita lauseita eli ohjelmalohko. Mikäli if-lauseen ehdon toteutumisen seurauksena on suoritettavana useita lauseita, nämä kootaan aaltosulkujen sisään. Ohjelmalohko muodostuu seuraavasti:
if (ehto) {
tehtävä lause 1; tehtävä lause 2; ... tehtävä lause X;}
Mikäli ehto on tosi, suoritetaan aaltosulkujen sisällä olevat lauseet, eli lisäämällä aaltosulkeet saadaan if-lauseelle useampia toimintoja aikaan.
Tee PHP-koodaus joka toteuttaa seuraavan ehtorakenteen tulostuksineen:
LUKU_1 = 12
LUKU_2 = 14
LUKU_3 = 16
jos LUKU_2 on yhtäsuuri tai suurempi kuin 14,
näytä LUKU_1 + LUKU_2 ja laskun tulos
näytä LUKU_2 + LUKU_3 ja laskun tulos
näytä LUKU_1 + LUKU_3 ja laskun tulos
Sisäkkäisten if-lauseiden yleinen muoto on:
if (ehto1){
if (ehto2){ tehtävät lauseet; }}
Toinen if-lause on ensimmäisen if-lauseen rungon osa. Lause suoritetaan vain kun molemmat ehdot ovat tosia.
<div class="vari2">
<?php
$luku = 141;
echo "Tutkittava luku on 141.
";
if($luku >= 1 & $luku < 500){
echo " Luku on 1 ja 500 välillä,
";
if($luku > 1 & $luku < 250){
echo " sekä luku on 1 ja 250 välissä.
";
}
if($luku > 251 & $luku <= 500){
echo " sekä luku on 251 ja 500 välissä.";
}
}
?>
</div>
Tulos www-sivulla:
if-lauseessa testataan ehto, mikäli ehto pitää paikkansa, suoritetaan if-lauseelle kirjoitetut tehtävät. Mikäli ehto ei toteudu, toimintoja ei suoriteta. Kuitenkin usein on tilanne että pitäisi jotain toimintoja tehdä vaikka if-lause ei toteutunut. Ratkaisu on if...else-lause, joka sallii suoritettavaksi tehtäviä mikäli if-ehto ei toteudu.
if (ehto){
tehtävät lauseet;} else
tehtävät lauseet;
3. Esimerkki. Käytetään date()-funktioita kellonajan saamiseksi aika-muuttujaan. Muuttujassa aika olevaa tietoa tutkitaan
if- lauseen ehdossa.
Mikäli kello on 9 - 18, toivotetaan Hyvää päivää ! ja näytetään kellonaika, muuten näytetään
Hyvää iltaa ! teksti.
(Esimerkissä käytetään OR-operaattorina saman loogisen operaation tekevää || -operaattoria)
<div class="vari2">
<?php
$aika = date("H:i");
if ($aika >= "9" || $aika < "18")
{
echo "Hyvää päivää !
Kello on ";
echo $aika;
}
else {
echo "Hyvää iltaa !";
}
?>
</div>
Tulos www-sivulla:
Sisäkkäiset if...else lauseet:
if (ehto) {
if (ehto 2) lause A; else lause B;} else lause C;
Sisäkkäiset if-else rakenteet. 4. Esimerkki, ilmoitukset lämpötilan mukaan:
<div class="vari2">
<?php
$lampo = 13.1;
if ($lampo < 25)
{
if ($lampo > 15)
echo "Sopivan lämmintä.";
else
echo "Liian kylmää !";
}
else
echo "Nyt tuli hiki...";
?>
</div>
Tulos www-sivulla:
Lauserakennetta if elseif elsevoidaan käyttää vaihtoehtona rakenteelle if - if - else.
Yleinen muoto if...elseif...else lauseelle:
if (ehto 1) {
if (ehto 1) lause A; elseif (ehto 2) lause B;} else lause C;
5. Esimerkki. Jäähdytyksen käynnistäminen ja sammuttaminen:
<div class="vari2">
<?php
$lampo = 19.9;
echo "Anturin lämpötila " . $lampo . "<br>";
if ($lampo > 23) {
echo " Käynnistä jäähdytys. ";
}
elseif ($lampo < 20) {
echo "Pysäytä jäähdytys";
}
else {
echo "Sisälämpö välillä 20 - 23.";
}
?>
</div>
Tulos www-sivulla:
else-osa kuuluu aina lähimpään if-osaan. Sulkuja käyttämällä voidaan järjestystä muuttaa. Sisäkkäisten if...else-lauseiden käytössä on oltava huolellinen, koska else saattaa viitata helposti väärään if-osaan.
Käyttämällä switch...case-rakennetta on mahdollisuus suorittaa useasta valinnasta yksi lause tai lausekokonaisuus.
Yleinen muoto switch...case lauseelle:
switch(valinta){
case valinta_1: lause 1; break; case valinta_2: lause 2; break; ..... case valinta_n: lause n; break; default: oletuslause;}
Rakenteessa switch...case testataan muuttuja arvoa. Mikäli case tapauksista muuttujan arvo löytyy, case:n
lause suoritetaan. Muussa tapauksessa suoritetaan default-osa, default-osa voi myös puuttua.
Tutkittavan muuttujan arvo voi olla kirjain, teksti, numero jne.
6. Esimerkki. Marjojen väri:
<div class="vari2">
<?php
$Vari = "Mustikka";
switch ($Vari) {
case "Mansikka":
echo "Mansikan väri on punainen!";
break;
case "Mustikka":
echo "Mustikan väri on sininen!";
break;
case "Lakka":
echo "Lakan väri on oranssi!";
break;
default:
echo "Sinun marjasi ei ole Mansikka, Mustikka tai edes Lakka!";
}
?>
</div>
Tulos www-sivulla:
Tee PHP-koodaus käyttäen switch-case rakennetta joka muuttujan tulos arvon mukaan toimii seuraavasti:
tulos = 123
näytä teksti "Tulos on 123"
tulos = 234
näytä teksti "Tulos on 234"
tulos = 456
näytä teksti "Tulos on 456"
tulos = 567
näytä teksti "Tulos on 567"
Testaa koodaus kaikilla annetuilla arvoilla.