Guide: PHP- & MySQL-innføring: Kapittel 3
Kontrollering av verdier
Det er nok en gang klart for et nytt kapittel i vår PHP-guide. Nå ser vi på hvordan vi kan utføre ulike handlinger basert på betingelser.
Side 1: Om denne innføringen
Er du en av mange som har lekt litt med HTML, men savner mer funksjonalitet? I denne artikkelserien vil vi lære deg å bruke PHP og MySQL til å lage dynamiske webløsninger, slik at du kan ta webutviklingen til et nytt nivå.
For å få best mulig utbytte av denne innføringen er det en fordel at du kan HTML og har en viss kjennskap til programmering. Dette er imidlertid ikke et krav - du skal kunne skjønne det meste uten noen som helst bakgrunnskunnskap.
I kapittel 1 av denne guiden så vi på hva PHP er, historien til PHP og hvordan PHP installeres. Til slutt så vi på litt enkel programmering som "hello world" og inkludering av filer.
I kapittel 2 så vi på syntaksen til PHP og hvordan man behandler variabler. Til slutt så vi litt på hvordan man sender ut-data fra PHP, som echo og print.
I dette kapittelet vil vi se på hvordan vi kan kontrollere og sammenlikne verdier, for deretter å utføre handlinger basert på utfallet. Du vil lære å skrive skript som har handlinger med betingelser - altså kommandoer som kun vil bli utført hvis betingelsene ligger til rette.
Fra og med dette kapittelet har jeg gjort en liten forandring - kodeeksemplene vil ikke lenger inkludere start- og slutt-markeringen for PHP (<?php og ?>). Skal du teste eksemplene i praksis må du altså selv legge til dette. Husk at dokumentet må lagres med filendelsen .php.
Har du ikke lest noe av denne guiden før anbefaler jeg deg å lese kapittel 1 og kapittel 2 før du leser dette kapittelet.
Side 2: If-else og boolske konstanter
If-else og boolske konstanter
Det er vanskelig å skrive interessante skript uten å la utførelsen til skriptet avhenge av noe. For å lage skikkelige skript må vi kunne utføre kontroller, for deretter å utføre handlinger basert på utfallet.
Det finnes to hovedtyper av kontroller - grener (branches) og sløyfer (loops). En gren utfører én enkel kontroll, og avhengig av utfallet velger den hvilken vei den skal gå. En sløyfe derimot, utfører denne kontrollen flere ganger. Etter at kontrollen er utført vil den begynne på kontrollen igjen, inntil ønsket antall kontroller er gjort.
If-else
If-else er den vanligste formen for å utføre en kontroll. Syntaksen er slik:
if (test av uttrykk)
{
Utfør visse handlinger
}
else
{
Utfør noen andre handlinger
}
Her blir først en test av ett eller flere uttrykk utført. Hvis uttrykket/uttrykkene stemmer, vil den boolske verdien TRUE returneres, og handlingene vil bli utført deretter. Er imidlertid uttrykket/uttrykkene usanne, slik at verdien FALSE returneres, vil ikke kommandoen(e) som står mellom klammene ({ og }) utføres. Det er her else kommer inn i bildet. Else sjekker ikke om noen uttrykk stemmer, den bare utfører én eller flere kommandoer som et følge av at testen av uttrykket/uttrykkene avslørte at uttrykket/uttrykkene var usanne.
Man trenger strengt tatt ikke bruke klammene i alle tilfeller, men det er god programmeringsskikk å gjøre det, for lesbarhetens skyld. For eksempel kan det bli vanskelig å finne ut hvilken if-spørring en else hører til hvis det ikke er markert med klammer.
Boolske konstanter
For å se om et uttrykk stemmer bruker vi operatorenif. Deretter kan vi bruke operatoren else, som utfører en eller flere kommandoer hvis uttrykket ikke stemmer. Den letteste formen for et uttrykk er de boolske verdiene TRUE og FALSE.
if (TRUE)
{
echo "Dette vil alltid vises";
}
else
{
echo "Dette vil aldri vises";
}
Som vi ser utfører vi en kontroll ved hjelp av if. Stemmer ikke det første uttrykket vil programmet automatisk hoppe ned til else og utføre kommandoen(e) der. Skulle vi ha skrevet dette så vi enkelt kunne forstått det hadde det sett slik ut:
HVIS SANT
SKRIV "Dette vil alltid vises"
ELLERS
SKRIV "Dette vil aldri vises"
Vi kan også utføre en motsatt kontroll, der vi kjører kontrollen if (FALSE):
if (FALSE)
{
echo "Dette vil aldri vises";
}
else
{
echo "Dette vil alltid vises";
}
Dette vil da være det tilsvarende "på norsk":
HVIS USANT SKRIV "Dette vil aldri vises" ELLERS SKRIV "Dette vil alltid vises"
Eksemplene over har heller liten nytte i et virkelig skript - de er kun ment for å gi en enkel innføring. På neste side vil vi se på eksempler som du vil få mer bruk for i praksis.
Side 3: Sammenlikne verdier
Sammenlikne verdier
Den mest elementære formen for betingelser er å sammenlikne to verdier. I det følgende eksempelet sammenlikner vi to heltall.
if (3 == 3)
{
echo "Uttrykket stemmer";
}
else
{
echo "Uttrykket stemmer ikke";
}
Her gjennomfører vi en kontroll av de to heltallene "3" og "3", med operatoren ==, som betyr "er lik". Kjører vi dette skriptet vil vi selvsagt få verdien "Uttrykket stemmer". Hadde ikke uttrykket stemt ville vi fått verdien "Uttrykket stemmer ikke".
Vi kan selvsagt gjennomføre denne kontrollen med variabler. Se det følgende eksempelet:
$variabel1 = 3;
$variabel2 = 3;
if ($variabel1 == $variabel2)
{
echo "Uttrykket stemmer";
}
else
{
echo "Uttrykket stemmer ikke";
}
Hvis vi derimot bytter ut == med != vil vi få et helt annet resultat. != betyr nemlig "ikke lik".
$variabel1 = 3;
$variabel2 = 3;
if ($variabel1 != $variabel2)
{
echo "Uttrykket stemmer";
}
else
{
echo "Uttrykket stemmer ikke";
}
Det finnes en rekke slike sammenliknings-operatorer. Her er en komplett liste:
- == (er lik) - Sann hvis de to argumentene er like hverandre
- != (ikke lik) - Sann hvis de to argumentene ikke er like hverandre
- < (mindre enn) - Sann hvis det første argumentet er mindre enn det andre argumentet
- > (størren enn) - Sann hvis det første argumentet er større enn det andre argumentet
- <= (mindre enn eller lik) - Sann hvis det første argumentet er mindre enn eller likt det andre argumentet
- >= (større enn eller lik) - Sann hvis det første argumentet er større enn eller likt det andre argumentet
- === (identisk) - Sann hvis de to argumentene er like hverandre, og av samme type (altså må begge være strenger, eller begge må være heltall osv.)
Det er viktig å merke seg forskjellen mellom =, == og ===. = brukes som kjent til å sette variabler. Kjører du følgende skript:
$a = 1; $b = 2; if ($a = $b) (...)
...vil du sette $a til den samme verdien som $b. I tillegg vil uttrykket bli sett på som sant (TRUE) så lenge $b er satt til en verdi. I tilfellet over skulle vi ha brukt ==, eventuelt === hvis vi ønsket å være sikre på at begge variablene er av samme type.
Side 4: Logiske operatorer
Logiske operatorer
En logisk operator er en operator som forbinder logiske uttrykk (som boolske uttrykk) til å produsere nye boolske verdier (TRUE eller FALSE). Med andre ord forbinder logiske operatorer flere uttrykk sammen, og utfører funksjoner avhengig av utfallet av uttrykkene. Som i alle programmeringsspråk finnes det i PHP en rekke logiske operatører. Først ser vi på &&, på engelsk kalt "and" ("og").
$number1 = 5;
$number2 = 10;
$number3 = 12;
$number4 = 15;
if ($number1 < $number2 && $number4 > $number3)
{
echo "Uttrykkene stemmer";
}
else
{
echo "Uttrykkene stemmer ikke";
}
I dette eksempelet bruker vi den logiske operatoren && for å indikere at både uttrykket "5 er mindre enn 10" og uttrykket "15 er mer enn 12" må stemme for at kontrolleringen skal returnere TRUE, og dermed gjennomføre kommandoen(e). I dette skriptet stemmer begge uttrykkene, og vi vil derfor få teksten "Uttrykkene stemmer".
På samme måte kan vi gjennomføre en kontroll som kun krever at én av uttrykkene skal stemme, ved hjelp av || (på engelsk "or", norsk "eller").
$number1 = 5;
$number2 = 10;
$number3 = 15;
$number4 = 12;
if ($number1 < $number2 || $number4 == $number3)
{
echo "Ett eller flere av uttrykkene stemmer";
}
else
{
echo "Ingen av uttrykkene stemmer";
}
I dette eksempelet stemmer uttrykket "5 er mindre enn 10", mens uttrykket "12 er lik 15" ikke stemmer. || indikerer imidlertid at det er nok at ett av uttrykkene stemmer, og vi vil derfor få returnert teksten "Ett eller flere av uttrykkene stemmer".
Vi kan også sette sammen flere logiske operatorer i en og samme if-gren. Skal vi gjøre dette gjøres det på følgende måte:
$var1 = 1; $var2 = 1; $var3 = 2; if (($var1 == $var2 && $var2 < 1) || ($var1 != $var3 && $var3 > $var2)) (...)
(Hvor (...) representerer det videre skriptet.)
Her er en liste over alle logiske operatorer i PHP5:
and- Er sann hvis begge uttrykkene stemmeror- Er sann hvis minst ett av uttrykkene stemmerxor- Er sann hvis ett av (men ikke begge) uttrykkene er sanne&&- Akkurat samme somand||- Akkurat samme somor!- Er sann hvis uttrykket til høyre er usant
Side 5: Else if
Else if
Hva hvis vi skal utføre en rekke kontrolleringer, og hvis den første kontrolleringen viser seg å være sann, så er resten av kontrolleringene unødvendige? Til nå har vi kun brukt if og else, og det er tungvint å bruke i et slikt tilfelle. La meg introdusere dere for else if.
$var1 = 10;
$var2 = 20;
$var3 = 30;
if ($var1 > $var2)
{
(...)
}
else if ($var2 != $var3)
{
(...)
}
else
{
(...)
}
Dette burde være rimelig selvforklarende, men jeg tar allikevel en kort forklaring. Hvis resultatet av den aller første kontrollen viser seg å være usann, så vil den neste kontrollen utføres. Viser det seg imidlertid at den første kontrollen er sann vil ikke else if-kontrollen bli utført. PHP-parseren vil altså hoppe over den.
Sammenlikne verdier som ikke er heltall
Til nå har vi kun sett på hvordan man sammenlikner tall. Men hva hvis man vil sammenlikne andre former for variabler - for eksempel strenger?
if ($username == "Stupidguest")
{
echo "Du har et idiotisk brukernavn.";
}
Se, det var ikke verre enn det! Vi bare la til noen anførselsteng for å markere at det er snakk om en streng (eng: string). Når det gjelder sammenlikning mellom heltall og desimaltall, så gjør PHP-parseren selv en god jobb med å endre typen slik at alle tallene er desimaltall, slik at de kan bli sammenliknet. For eksempel vil 50 da bli 50.0. Med andre ord bruker vi her akkurat samme metode som når vi sammenlikner to heltall.
Side 6: Switch
Switch
Hvis vi har en rekke else if-kontrolleringer kan det lønne seg å bytte til switch. Det er lettere å forklare dette med et skikkelig eksempel. Som det sies, et bilde sier mere enn tusen ord. Bare at i dette tilfellet er det et par kodeksempler.
if ($dag == 1) { echo "Mandag"; }
else if ($dag == 2) { echo "Tirsdag"; }
else if ($dag == 3) { echo "Onsdag"; }
else if ($dag == 4) { echo "Torsdag"; }
else if ($dag == 5) { echo "Fredag"; }
else if ($dag == 6) { echo "Lørdag"; }
else if ($dag == 7) { echo "Søndag"; }
(Du ser sikkert at jeg har kuttet vekk noen linjeskift. Dette er gjort for å spare plass, og som du lærte i kapittel 2 bryr ikke PHP seg om linjeskift.) Som vi ser skriver dette skriptet ut navnet på ukedagen, avhengig av hvilket nummer det er (for å få dette skriptet til å fungere måtte selvsagt variabelen dag vært definert). Dette kan gjøres på en bedre, og i manges øyne, lettere måte med switch.
switch($dag)
{
case 1:
echo "Mandag";
break;
case 2:
echo "Tirsdag";
break;
case 3:
echo "Onsdag";
break;
case 4:
echo "Torsdag";
break;
case 5:
echo "Fredag";
break;
case 6:
echo "Lørdag";
break;
case 7:
echo "Søndag";
break;
}
Denne kodebiten gjør nøyaktig det samme som vårt tidligere eksempel. Lett, ikke sant? Det er imidlertid én viktig ting du må huske på når du benytter switch - du må alltid avslutte kommandoene med break;. Hvis du glemmer å gjøre dette, og dag er satt til for eksempel 5, vil kommandoen(e) i case 5, case 6 og case 7 bli utført.
Switch med strenger
Switch kan selvsagt brukes i andre tilfeller enn der variablen(e) vi bruker er heltall. La oss se på hvordan det gjøres med strenger (strings), altså tekst.
switch ($mat)
{
case "ostekake":
echo "Jeg vil også ha ostekake!";
break;
case "lasagne":
echo "Lasagne, du. Du er den typen altså.";
break;
case "pizza":
echo "Pizza hadde virkelig gjort seg nå.";
break;
}
Avhengig av hva variabelen mat er satt til, så vil den respektive teksten bli vist.
Men hvordan kan man få til else i en switch-kontrollering? Dette gjøres ved hjelp av default. Hvis ingen av uttrykkene i switch viser seg å være sanne, vil visse funksjoner bli utført, altså akkurat som ved bruk av else.
default trengs ikke å avsluttes med break, men må plasseres til slutt.
switch ($foo)
{
case "bar":
echo "Foobar! Let's dance!";
break;
case "foobar":
echo "Fubar! Itt' no dansing for deg.";
break;
default:
echo "Denne teksten vil bli vist hvis \$foo ikke er definert.";
}
(Teit eksempel, men du forstår nok meningen.)
Man kan selvsagt også utføre tester med logiske operatører ved bruk av switch.
switch (TRUE)
{
case $foo == $bar:
echo "Hurra, hurra!";
break;
(...)
}
Side 7: Løkker
Løkker - while
Det vi har sett på til nå er nyttig, men det har selvsagt sine begrensninger. Nå har vi endelig kommet oss til løkker (eng: loops), og det er nå moroa for alvor kan starte.
Den letteste formen for en løkke er while, som vil utføre en eller flere kommandoer helt til det stoppes.
while (TRUE) {
echo "Oh, God! Denne løkken fortsetter i all evighet!";
}
Kjører vi denne kodebiten vil altså teksten "Oh, God! Denne løkken fortsetter i all evighet!" bli skrevet ut (jepp, du gjettet riktig) uendelig antall ganger. En while-løkke vil altså utføre kommandoen(e) inntil uttrykket er usant.
$nummer = 1;
while ($nummer <= 10) {
echo "Dette er linje nummer $nummer<br>";
$nummer++;
}
Her gir vi variabelen nummer sin egen verdi pluss 1 etter hver gang teksten blir skrevet ut. $nummer++ vil gjøre samme nytten som $nummer = $nummer + 1 (mer om dette i et senere kapittel). Som vi ser vil while-løkken utføre kommandoene helt til uttrykket ikke stemmer, altså helt til det er skrevet ut 10 linjer. Prøv selv og se!
Do-while
Do-while-konstruksjonen er lik som while, bortsett fra at kontrolleringen foregår på slutten av løkken. Syntaksen er slik:
do
{
funksjoner(er)
}
while (uttrykk);
Funksjonene vil bli utført én gang, og deretter vil uttrykket/uttrykkene i while-løkken bli testet, og om det viser seg å være sant (returnerer verdien TRUE) vil den utføre funksjonene i do inntil uttrykket/uttrykkene viser seg å være usanne.
$nummer = 1;
do
{
echo "Dette er linje nummer $nummer<br>";
$nummer++;
}
while ($nummer <= 10);
Side 8: Mer om løkker
Mer om løkker - for
Den mest kompliserte løkketypen er for, som har følgende syntaks:
for (uttrykk1; uttrykk2; uttrykk3)
{
funksjon(er)
}
Først blir uttrykk1 utført, og det kun én gang. Denne inneholder normalt deklarering av en variabel. Deretter blir selve sjekken av uttrykket utført (uttrykk2). Viser dette uttrykket seg å være usant vil for-løkken stoppes. Er den sann fortsetter den, og utfører uttrykk3.
Det høres kanskje vanskelig ut, men se på det følgende eksempelet. Vi har tatt utgangspunkt i det samme som vi gjorde ved eksemplene på while- og do-while-eksemplene.
for ($nummer = 1; $nummer <= 10; $nummer++)
{
echo "Dette er linje nummer $nummer<br>";
}
Kjører vi dette vil vi få akkurat samme utfall som ved de forrige eksemplene. Prøv selv!
La oss bruke det i praksis!
Eksemplene vi nå har sett på fungerer fint, men de har liten nytte i praksis. La oss bruke det vi har lært i praksis til å estimere kvadratroten av et tall, la oss si 81. Riktignok har PHP en fin funksjon som selv sier hva kvadratoroten er (sqrt()), men det er mye morsommere å gjøre det selv. Gjetningen starter med at "1" er kvadratroten, og forbedrer etter hver kjøring gjetningen.
For å gjøre dette må vi kunne litt grunnleggende matematikk i PHP. Det er selvsagt svært enkelt. * indikerer multiplikasjon (ganging), / indikerer divisjon (deling), - indikerer minus, osv.
$nummer = 81;
$gjett = 1.0;
$presisjon = 0.0000001;
$gjett_rot = $gjett * $gjett;
while (($gjett_rot - $nummer > $presisjon) or
($gjett_rot - $nummer < - $presisjon))
{
echo "Jeg gjetter at kvadratroten av $nummer er $gjett<br>";
$gjett = ($gjett + ($nummer / $gjett)) / 2;
$gjett_rot = $gjett * $gjett;
}
echo "$gjett er kvadratroten av $gjett_rot";
Kjører vi dette skriptet skal det se ut noe som dette:
Dette kan imidlertid virke litt vanskelig og uoversiktlig for mange, spesielt de som ikke har så mye kjennskap til matematikk. Studer koden nøyere, og test gjerne ut forskjellige ting selv!
Side 9: Break og continue
Break og continue
Den vanlige måten å stoppe en løkke fra utførelse er at uttrykket/uttrykkene viser seg å være usanne, som vi har sett til nå. break og continue muliggjør imidlertid en alternativ måte å stoppe løkken fra utførelse. break-kommandoen avslutter hele den aktuelle løkken, mens continue-kommandoen hopper over utførelsen av de neste kommandoene.
La oss teste om tall er oddetall eller ikke. Denne testen kjøres slik: $variabel % 2 (% er operatoren for modulo), og variabelen vil deretter få en verdi basert på om den er et oddetall eller ikke. Er det et oddetall vil variabelen få verdien 1, mens hvis det ikke er et oddetall vil den få verdien 0.
for ($tall = 1; $tall < 10; $tall++)
{
if ($tall % 2 != 0)
break;
echo $tall;
}
Eksempelet over vil faktisk ikke returnere noe som helst. Dette er fordi $tall er satt til 1, og som vi vet er det et oddetall. Break vil dermed sette en effektiv stopper for hele løkken.
Hadde vi imidlertid satt verdien til 2 hadde vi fått skrevet ut verdien av variabelen (2), ettersom 2 ikke er et oddetall. Ved neste kjøring av løkken ville imidlertid verdien vært 3, ettersom vi i for-løkken setter verdien av variabelen til sin egen verdi + 1. Verdien blir dermed 3, som er et oddetall. Løkken ville altså ha blitt stoppet av break ved andre kjøring.
for ($tall = 1; $tall < 10; $tall++)
{
if ($tall % 2 != 0)
continue;
echo $tall;
}
Ved første utførelse av løkken vil variabelen ha verdien 1, som er et oddetall, og det blir dermed ikke vist. Ved andre utførelse er imidlertid verdien 2, som ikke er et oddetall. Når løkken er ferdig med utførelsen vil vi ha fått vist tallene 2, 4, 6 og 8. Dette er altså de tallene som ikke er oddetall mellom 1 og 9.
Som sagt hopper continue-kommandoen over utførelsen av de neste kommandoene, men lar løkken kjøre på nytt. Vi kan nå benytte det eksakt samme eksempelet som over, bare at vi har byttet ut break med continue.
Vi kan nå bruke det vi kan i praksis til å konstruere et skript som vil vise alle primtall (tall som kun er delelig med seg selv og 1) opp til et visst tall. Til akkurat dette skriptet er ikke continue nødvendig.
// Grensen for hva som er den høyeste verdien vi kan teste
$grense = 300;
// Hvilken verdi testen starter på
$test = 2;
while (TRUE)
{
$testdivisjon = 2;
// Hvis vi har oversteget den høyeste verdien vi skal teste,
// stopp skriptet
if ($test > $grense)
break;
while (TRUE)
{
if ($testdiv > sqrt($test))
{
// Skriv ut og stopp løkken
echo "$test ";
break;
}
// Sjekk om $test er mulig å dividere med $testdivisjon
if ($test % $testdivisjon == 0)
break;
$testdivisjon++;
}
$test++;
}
Kjører vi dette skriptet skal vi få følgende tall vist:
Det viktige å merke seg her er at break kun vil stoppe den nærmeste løkken den står "inne i". Den vil altså ikke avslutte hoved-løkken, men bare sin egen løkke. Se litt på skriptet, og du skjønner det nok. Som du sikkert ser har vi her benyttet PHP-funksjonen sqrt() til å sjekke kvadratroten.
Akkurat som ved vårt skript som estimerer kvadratrot kan dette skriptet være litt vanskelig å forstå for mange. Jeg kan bare gjenta meg selv - les koden nøyere og test ut ting selv, så går det nok bra!
Side 10: Uendelige løkker og alternativ syntaks
Uendelige løkker
Som vi så i vårt aller første eksempel med while-løkken er det fullt mulig å konstruere løkker som fortsetter i all evighet. Som standard er max_execution_time, altså den maksimalt tillate tiden et skript har på å bli ferdig med kjøringen, satt til 30 sekunder i php.ini (PHPs konfigurasjonsfil). Et skript som overksrider denne begrensingen vil resultere i en feilmelding som ser slik ut:
Fatal error: Maximum execution time of 30 seconds exceeded in [fil] on line [linje]
Med andre ord vil en uendelig løkke som standard bli stoppet etter ett halvt minutt, slik at den ikke spiser opp ressursene til serveren.
I enkelte tilfeller kan det imidlertid være nyttig, om ikke nødvendig, å sette denne tidsbegrensingen høyere. Dette bruker vi funksjonen ini_set() til. Ved utførelse vil denne funksjonen midlertidig endre en eller flere av konfigurasjonene i php.ini. Med andre ord vil ikke disse endringene påvirke andre skript.
La oss si at vi har en enorm løkke som ved kjøring vil overstige tidsbegrensingen. Dette er, selv på svakere servere, relativt vanskelig å få til, men skriver man for eksempel store filer til disken er det godt mulig å overstige denne begrensningen. Vi benytter da ini_set("max_execution_time", "120");. I eksempelet vårt definerer vi at maks tid skriptet har for utførelse vil være 120 sekunder.
Alternativ kontroll-syntaks
Forskjellige programmeringsspråk har forskjellig syntaks, men PHP forsøker å gi muligheter for mange typer syntaks, slik at overgangen fra et språk til PHP skal være så lite smertefull som mulig. Til nå har vi sett på den normale metoden å utføre kontroller med PHP, men vi kan også bruke en mer utradisjonell metode. La oss gå rett på sak, og se hvordan en enkel if-else-kontroll kan skrives på en annen måte.
if ($tall == 0):
echo "$tall er 0";
elseif ($tall == 1):
echo "$tall er 1";
endif;
Skulle vi ha skrevet en while-løkke på denne måten ville det sett slik ut:
$nummer = 1;
while ($nummer <= 5):
echo "Dette er linje nummer $nummer<br>";
$nummer++;
endwhile;
Så hvorfor bruke dette? Det finnes egentlig ingen god grunn - ytelsesmessig skal de være omtrent helt like. I tidligere versjoner av PHP ble kontroller skrevet på denne måten, og fordi brukere er vant med denne syntaksen både fra andre programmeringsspråk og fra tidligere versjoner av PHP er det fortsatt mulig å skrive på denne måten. Det er med andre ord et spørsmål om smak.
Side 11: Oppsummering
Oppsummering
I kapittel 3 har vi endelig fått begynne på mer morsomme ting. Vi så først på den svært mye brukte if-else-konstruksjonen, som utføres slik:
if (test av uttrykk)
{
Utfør visse handlinger
}
else
{
Utfør noen andre handlinger
}
Videre har vi sett på sammenliknings-operatorer som == og <=, og lært den svært viktige forskjellen mellom =, == og ===.
Logiske operatorer forbinder logiske uttrykk, slik at vi kan foreta kontroller med flere uttrykk i én og samme kontroll. Eksempler på logiske operatorer er && og ||.
Vi så mye på switch, som trist nok er et nærmest glemt kapittel hos PHP. switch kan gjøre lange if-else-kontroller lettere og i mange øynes mer oversiktlig.
Vi lærte om forskjellige typer løkker, som har den egenskapen at de gjennomfører kontrollen opp til uendelig antall ganger. Skulle man lage en løkke som foregår uendelig vil den automatisk bli stoppet av PHPs 30-sekundersgrense, med mindre annet er spesifisert.
De av dere som har brukt PHP endel før vil nok legge merke til at jeg ikke har forklart foreach. Det kommer av den enkle grunnen at foreach brukes til å kjøre løkker på arrays, noe jeg enda ikke har forklart hva er for noe. Jeg skal imidlertid forklare hvordan man bruker foreach i kapittel 5.
I neste kapittel vil vi se på funksjoner. Hva er funksjoner, hvordan bruker man de og hvordan lager man sine egne? Kapittel 4 vil komme om rundt én uke.