qualitum logo
Villkorssatser
Hittills i skolan har vi gått igenom variabelhantering, operatorer och dylikt. Nu höjer vi svårigheten ett snäpp och ger oss i kast med villkorssatser. Dessa satser som ibland kallas för hoppsatser sköter beslutstagningen i dina skript. Är du gammal C++-programmerare kommer du känna igen syntaxen då den är densamma.

Det finns två stycken villkorssatser i PHP, vi börjar med den vanligaste som är If-satsen.

If-satsen

Översatt från engelskan betyder ordet 'if' om. Det är just så den fungerar, om någonting är på ett speciellt sätt görs det. För att få reda på om det är på ett speciellt vis används de jämförande och logiska operatorerna som vi gick igenom i föregående kapitel. Vi fortsätter med ett exempel. Här kontrollerar vi om ett är mindre än två, det är det givetvis och kodblocket (allt mellan måsvingarna ({ och }) körs.

Exempel

PHP:
1:
<?php
2:
 
3:
if ( ) {   // Tecknet "{" påbörjar blocket med kod
4:
    echo 'Två rader i kroppen<br />';
5:
    echo 'Och 1 är fortfarande mindre än 2';
6:
}      // Tecknet "}" avslutar blocket med kod
7:
 
8:
?>


Nu jämför du aldrig två heltal utan då används variabler eller returvärden från funktioner.

Exempel

PHP:
1:
<?php
2:
 
3:
/* 
4:
Vi anropar först en funktion som skickar tillbaka ett slumpat heltal. Koden är inte körbar eftersom vi inte skapat funktionen geMigEttHeltal().
5:
*/
6:
 
7:
$a geMigEttHeltal(); 
8:
$b 3
9:
 
10:
if ( $a $b ) {
11:
    /* Är $a mindre än $b kommer blocket köras */
12:
    echo 'Blocket körs.'
13:
}   
14:
   
15:
?>


Du kan också gardera dig för att $a inte är mindre än $b. För att åstadkomma detta måste vi göra ett tillägg till den form som vi skrivit de två första exemplen på.

Exempel

PHP:
1:
<?php
2:
 
3:
if ( $a $b ) {
4:
    echo "$a är mindre än $b";  
5:
} else {
6:
    echo "$a är större eller lika med än $b";
7:
}
8:
 
9:
?>


'Else' är ju engelskans ord för 'annars' och det sammanfattar ganska så bra hur satsen fungerar i PHP. Stämmer inte uttrycket i if-satsen (om det inte ger sant) körs else-satsen.

Innan vi går vidare till switch-satsen skall vi ge ett exempel på hur du kan testa fler villkor. Det gör man genom 'if-else if' konstruktionen.

Exempel

PHP:
1:
<?php
2:
 
3:
$land 'Danmark';
4:
 
5:
if ($land == 'Sverige') {
6:
    echo 'Landet du sökte var Sverige';
7:
} elseif ($land == 'Danmark') {
8:
    echo 'Landet som du sökte var Danmark';
9:
} elseif ($land == 'Norge') {
10:
    echo 'Landet som du sökte var Norge';
11:
} else {
12:
    echo 'Inget resultat';
13:
}
14:
 
15:
?>


Exemplet får avsluta denna genomgång av if-satsen.

Switch-satsen

Switch-satsen kan med fördel användas som komplement till if-satsen vid vissa tillfällen. If-satsen är mycket bra att använda om du inte alls vet värdet på en variabel, vet du vad variabeln kan innehålla kan switch-satsen vara att föredra. Skall man testa många olika möjligheter blir det också renare kod om du använder en switch-sats.

Exempel

PHP:
1:
<?php
2:
 
3:
switch($gor) {
4:
    case 'spara'
5:
        /* Nu körs kod för att spara ner information, 
6:
           exempelvis i en databas */
7:
    break;
8:
 
9:
    case 'radera':
10:
        /* Nu raderas viss information */
11:
    break; 
12:
 
13:
    default: 
14:
        /* Denna körs om $gor inte är 'spara' eller 'radera' */
15:
    break; 
16:
}
17:
 
18:
?>


Ovan såg du ett exempel som testade variabeln $gor. Innehöll den strängen 'spara' kördes ett speciellt kodblock. Skulle den innehålla 'radera' kördes ett annat kodblock, skulle den innehålla varken 'spara' eller 'radera' kördes kodblocket under default.

Jag visar nedan samma funktionalitet men med hjälp av en if-sats.

Exempel

PHP:
1:
<?php
2:
 
3:
if ($gor == 'spara') {
4:
    /* Nu körs kod för att spara ner information, 
5:
       exempelvis i en databas */
6:
} else if ($gor == 'radera') {
7:
    /* Nu raderas viss information */
8:
} else {
9:
    /* Denna körs om $gor inte är 'spara' eller 'radera' */
10:
}
11:
 
12:
?>


Switch går givetvis också att använda på heltal.

Exempel

PHP:
1:
<?php
2:
 
3:
switch ($tal) {
4:
    case 1
5:
        echo '$tal har värdet 1'
6:
    break; 
7:
 
8:
    case 2
9:
        echo '$tal har värdet 2'
10:
    break; 
11:
 
12:
    case 3
13:
        echo '$tal har värdet 3'
14:
    break;
15:
 
16:
    default: 
17:
        echo '$tal innehåller inte värdet 1, 2 eller 3'
18:
    break;
19:
20:
 
21:
?>


Viktigt att notera är användandet av 'break'. Testa att ta bort den satsen efter det första case-blocket. För att körningen skall fungera som tänkt skall $tal vara satt till heltalet ett innan vi kommer fram till själva switch-satsen.

Som du ser blir resultatet att körningen "trillar igenom" ner till nästa break. Körningen går in i blocket för 'case 1:' men fortsätter sedan även i blocket 'case 2:', trots att $tal är satt till ett.
Anledningen till att det blir på detta viset är att det ibland är så man vill ha det, det finns alltså tillfällen då detta är användbart. Men som sagt, tänk på att inte glömma break, glömmer du den kan det leda till fel som kan vara svåra att felsöka.

Nu var vi klara med villkorssatser, dags att gå igenom begreppet slingor!
Kapitel 7 av 8
[ 1 2 3 4 5 6 7 8 ]
Välkommen Anonymous
Logga in
Registrera
Snabblänkar
Markera alla forum som lästa
Skriptarkivet [86 av 97]
Visa nya inlägg
Visa dina inlägg
Visa obesvarade huvudinlägg
Läs vår skola
  Introduktion
  Programmera i webbmiljö
  Installationen i Windows
  Variabler och konstanter
  Vektorer
  Operatorer
  Villkorssatser
  Slingor
Statistik
Registrerade medlemmar: 19373
Inlägg totalt: 715564
Senaste medlem: Gandalf
Online
Besökare just nu: 18,
0 registrerade,
0 dolda och
18 gäster
Besökare som mest var 337 den 2007-07-16 20:05

Våra medlemmar
Inloggade medlemmar
Bra att veta
Förhållningsregler
Trivselregler
phpBB-FAQ
För dig som vill länka
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic
qualitum logo