PHP Centeri avaleht Skriptikogu Küsimuste-vastuste leht Teadete vaatamine ja saatmine Foorum - koht küsimiseks Otsingumootor Siit saad infot meie kohta

Kasutajanimi:  
  Parool: 
  Registreeri!   Unustasid salasõna?

 Skriptid (427) 

 Bannerisüsteemid
 E-kaardid
 E-maili saatmine
 E-poed
 Failihaldus
 Flash ja PHP
 Foorumid
 Jututoad
 Kalendrid
 Kalkulaatorid
 Kellad
 Klikilugejad
 Kommentaarid
 Külalisteraamatud
 Küsitlused
 Lehe turvamine
 Lingikogud
 Mängud
 Otsingusüsteemid
 Pildid ja PHP
 Shoutboxid
 Sisuhaldussüsteemid
 Statistika
 Suunamine
 Templeidisüsteemid
 Testid
 Uudised
 Uudistelistid
 Varia


 Otsing 

 

 Utiliidid 

 Kes on kus
 Kasutajate info
 Küsitlused
 PHP manuaal
 Õpetused
 Jututuba
 Lingikogu
 Lemmikskriptid


 Tingimuslaused if ja else
Autor: filx
Reede, 28. mai 2004 18:53
Tingimuslaused ehk valikud on igasugu programmerimis keele üks oluline osa.
Tingimuslauseid kasutatakse suuruste, väärtuste võrdlemiseks. Paljudes
programmeerimiskeeltes näevad tingimus laused ühesugused:

PHP kood:


if (tingimus) {
laused...
} else {
laused teisel juhul
}



Seega kui sa selle õpetusega midagi selgeks saad läbi PHP siis tea, et Perlis või
Java Scriptis on sul kergem. Õpetuses vaatame läbi kuidas käib kõige pisem tingimus,
kontrollime vormi, vaatame mitu tingimust ühte if´i võib minna, ja näiteid kus ja
kuidas kasutada tingimus lauseid.

Hakkame Pihta
Kõige lihtsam if ja else on selline:

PHP kood:


<?php
$autod
=13;
$bussid=14;
if(
$autod<$bussid){
echo 
"Busse on rohkem kui autosid!";
} else {
echo 
"Autosid on rohkem kui busse!";
}
?>



Kõigepealt defineerisime muutujad $autod ja $bussid, mida hakatakse võrdlema.
If kontrollis kas busse on rohkem kui autosid. See vastas tõele ja täideti laused, ehk
väljastati vastus. Vastasel juhul (else) oleks kirjutatud, et autosid on rohkem.

Võrdlemine

Võrdlemiseks saab kasutada mitmeid vahendeid:
- ühekordne võrdusmärk '='
- kahekordne võrdusmärk '=='
- kolmekordne võrdusmärk '==='
- suurem kui '<'
- väiksem kui '>'
- suurem või võrdne '<='
- väiksem või võrdne '=>'
Ühekordse võrduse '=' kasutamisel omistatakse väärtus, ehk see ei võrdle. Kahekordsete
võrdusmärkide '==' kasutamisel võrreldakse kahte väärtust. Kolmekordsete võrdusmärkide
kasutamisel toimub väga täpne võrdlus. Suuruste võrdlemise kasutatakse '<' või '>'. Kui
tahetakse võrrelda kas tingimus on suurem, väiksem ja võrdne vaadeldavas tingimuslauses
siis kasutatakse kas '<=' või '=>'.
Võrreldav võib lihtsalt numbreid või ka muutujaid. Muutujates võivad olla stringid (tähed, numbrid)
või siis ainult numbrid.

Tingimuse võib eelnevalt kirja panna ka muutujasse:

PHP kood:


<?php
$autod
=15;
$bussid=14;
$vastus=($autod<$bussid);
if(
$vastus){
echo 
"Busse on rohkem kui autosid";
} else {
echo 
"Autosid on rohkem kui busse";
}
?>



Mittevõrdsuse kontrolliks kasutatakse hüüumärki '!'. mis teeb õigest vale või siis valest õige.

PHP kood:


<?php
$autod
=15;
$bussid=14;
$vastus=($autod<$bussid);
if(!
$vastus){
echo 
"Busse on rohkem kui autosid";
} else {
echo 
"Autosid on rohkem kui busse";
}
?>



Rohkem valikuid

Rohkem kui kahe väärtuse võrdlemiseks kasutatakse veel 'if' ja 'else' juures 'elseif' käsku.

PHP kood:


<?php
$autod
=13;
$bussid=14;
$rongid=12;

if(
$autod<$rongid){
echo 
"Busse on rohkem kui autosid!";
} elseif (
$rongid<$bussid) {
echo 
"Busse on rohkem kui ronge!";
} else {
echo 
"Autosid on rohkem kui busse!";
}

?>


Kui esimene tingimus ei ole tõene minnakse järgmise juurde ja kui see ka tõene ei ole täidetakse
need laused mis 'else' sees on. 'elseif'e võid kirjuada nii palju kui vaja.

Rohkemate valikute puhuks on loodud switch ja case käskudest
koosnev lause. Kuigi kõik valimised saab ka if ja else käskudega läbi
ajada, õnnestub niimoodi mõnikord tegevus lühemalt kirja panna. Sobiva
case korral jätkatakse käskude täitmist kuni järgmise break’ini.

PHP kood:


<?php
$loom
=koer;
$vastus="tundmatu liik";
switch(
$loom){
case 
ahven$vastus="vee elukas"; break;
case 
kajakas$vastus="lendav loom"; break;
case 
koer$vastus="imetaja"; break;
}
echo 
"Tulemus: " $vastus;
?>


Kõigepealt loome jällegi mõned muutujad, et oleks kegrem scriptida. 'switch' on see mis vaatab tingimust,
siin kohal numbrit. Ja 'case' käitub vastavalt sellele mis tema juures tingimuseks on. Ning 'break' ei lase
eelmisel tingimusel edasi "tungida".
Järgnevas näites küsitakse kasutajalt vanus ning vastavalt sellele
teatatakse arvamus tema vanuse kohta. Lehe esimesel avamisel on vanus
tundmatu, sest kasutaja pole saanud sellesse midagi kirjutada.
Kui näiteks kirjutasin tekstivälja numbri kaheksa, siis on pärast lehele
jõudmist selles kasutada muutuja $vanus väärtusega 8. Kui kirjutanuks 7,
sel juhul tulnuks vastuseks “liiga noor”, sest seitsme järel pole käsklust
break ning sujuvalt võetakse ette ka kaheksale vastav käsk. Kuna selleks on
$vastus.="noor"; ehk muutuja vastus väärtusele liidetakse sõna “noor” (.=
tähistab algsele juurde liitmist, pikemalt kirjutatuna
$vastus=$vastus."noor".

PHP kood:


<?php
$vastus
="";
switch(
$vanus){
case 
7$vastus="liiga ";
case 
8$vastus.="noor"; break;
case 
9$vastus="paras"; break;
case 
10$vastus="vana"; break;
default: 
$vastus="tundmatu vanus";
}
echo 
"Tulemus: " $vastus;
?>
<p>
Sisesta vanus
<form>
<input type="text" name="vanus">
</form>
</p>



Mitme tingimuse kasutamine

Ühte 'if' või 'elseif'i võib kirjutada ka mitu tingimust. Aga siin tuleb kasutada:
- loogilist ja '&&'
- loogilist või '||'

PHP kood:


<?php
$autod
=15;
$bussid=14;
$rongid=12;
if(
$autod<$bussid || $rongid<$bussid){
echo 
"Busse on rohkem kui autosid ja ronge.";
} else {
echo 
"Autosid on rohkem kui busse";
}
?>



Kõigepealt võrreldakse autosid ja busse siis võrreldakse edasi kas busse on rohkem kui
ronge kui. Lõpuks võrreldakse kas vähemalt üks nendest on õige. Kui Seal oleks olnud loogiline ja '&&'
siis oleks pidanud mõlemad õiged olema, et 'if' osa oleks täitetud.
PHP's on olemas ka analoogid neile:
- loogilist ja 'AND'
- loogilist või 'OR'
Need teevad sama mida '&&' ja '||'. Ühes i'if' või 'elseif'is võib kasutada mitut loogilist avaldist.

PHP kood:


<?php
$autod
=17;
$bussid=14;
$rongid=12;
$lennukid=16;
if(
$autod<$bussid || $rongid<$bussid || $lennukid<$bussid){
echo 
"Busse on rohkem kui autosid, ronge ja lennukeid.";
} else {
echo 
"Autosid on rohkem kui busse";
}
?>



Kasulikke näited

Et koodi lühemalt, kompaktsemalt kirjutada on loodud ternaarne operaator (koosneb kolmest
osast). Esimeses on tingimus, teises on käitumine/vastus tingimuse tõese väärtuse puhul,
kolmandas väära väärtuse puhul. Tingimust eraldab küsimärk, vastuseid koolon.

PHP kood:


<?php
$autod
=13;
$bussid=14;
echo 
"Busse ". (($autod<$bussid) ? "on" "pole").
" rohkem kui autosid";
?>



Kui ülemine meetod ei peaks meeldima siis on olemas veel selline variant:

PHP kood:


<?php
$autod
=13;
$bussid=14;
if(
$autod<$bussid) echo "Busse on rohkem kui autosid!";
else echo 
"Autosid on rohkem kui busse!";
?>



Sa ei pea kasutama loogilisi sulge '{}', kui on vaja ainult üks rida kirjutada.

'if()'i sees või kasutada peale aritmeetiliste tehete ka muid asju. Üks võimalus oleks kasutada
stringi otsinguid (Vt. õpetust "stringiotsingud") või siis midagi muud. Kontrollimaks kas mingi muutuja
on olemas või ei võib kasutada 'isset'. Seda võib samamoodi kasutada vormide kontrollimiseks kuid ka
näiteks URL muutujate kontrollimiseks.

PHP kood:


<?php
$nimi
="Maie";
if(isset(
$nimi)){
echo 
"Nimi on <b>".$nimi."</b>";
} else {
echo 
"Ei ole nime!";
}
?>



Kui tingimus 'if' lauses vastab tõele ja täidetakse käsud mis seal on aga ei taheta edasist
scripti täitmist siis tuleks kasutada 'exit()' funktsiooni.

PHP kood:


<?php
$autod
=13;
$bussid=14;
if(
$autod<$bussid){
echo 
"Busse on rohkem kui autosid!";
exit();
} else {
echo 
"Autosid on rohkem kui busse!";
}

$koerad=13;
$kassid=14;
if(
$autod<$bussid){
echo 
"Kasse on rohkem kui koeri!";
} else {
echo 
"Koeri on rohkem kui kasse!";
}
?>



Õpetus on osaliselt refereeritud kuid suurem osa sai ikka ka ise kirjutatud. Kõikide näitete kohta on olemas ka PHP failid, kui soovite siis: http://www.hot.ee/filx/tl.zip

Kui kellelgi tekkis küsimusi seoses selle õpetuse või tingimuslasetega siis võtke ühendust filx@hot.ee .



Avaleht   -    Skriptikogu   -    Teated   -    Foorum   -    Reklaam   -    Tagasiside   -    Kasutamise reeglid

© Copyright 2002-2019 PHP Center. Kõik õigused reserveeritud.