I gang med PHP - part 2

Tags:    php
Skrevet af Bruger #1 @ 03.06.2002
I gang med PHP - part 2

Så kom vi til part 2 i min artikelserie om PHP for begyndere. Sidste gang kiggede vi lidt på de simplere ting i PHP, med variabler, form input osv. Denne gang går vi lidt videre, og kigger på nogle af de lidt mere avancerede ting, som fx arrays, løkker og et par andre småting. Lad os komme i gang!

Flere IF sætninger

Sidste gang kiggede vi lige kort på IF sætninger, men det er et emne der indeholder en del mere. Jeg vil vise lidt flere eksempler på hvordan de kan bruges, ikke mindst fordi det er så vigtig en del af PHP, samt mange andre programmeringssprog! Sidste gang viste jeg hvordan der kunne tjekkes om en variabel var sat med if($variabel). Her er et par eksempler mere, der viser hvordan man også kan bruge IF.
<?
// Tjek om en variabel <b>ikke</b> har en værdi
if(!$navn) {
	echo "Navn er tomt";
}
// Tjek om en variabel har en bestemt værdi
if($navn == "Kasper") {
	echo "Nydeligt navn der...";
}
// Vi kan også gøre det omvendt
if($navn != "Kasper") {
	echo "Hmmm, du er jo ikke Kasper!";
}

// Tjek flere variabler på en gang
if(($fornavn == "Kasper") AND ($efternavn == "Tanggaard")) {
	echo "Nydeligt navn der...";
}
?>
I første eksempel tester vi om hvorvidt en variabel ikke eksisterer. Vi bruger tegnet !, som er det samme som "ikke". Næste eksempel bruger vi == (to lighedstegn) til at se om variablen har en bestemt værdi. Det er vigtigt at forstå hvordan PHP bruger lighedstegn her: For at tildele en værdi bruges et enkelt lighedstegn. For at lave en form for sammenligning, fx mellem to variabler, bruges der to lighedstegn. I eksempel 3 tester vi om vores variabel ikke har en bestemt værdi. Det gør vi med to tegn: !, som jo betyder "ikke", og så et lighedstegn. Det bliver altså til "ikke lig med". I sidste eksempel tjekker vi to variabler på samme tid, hvilket jo kan være ganske anvendeligt. I princippet kan du opstille ligeså mange kriterier som du har brug for, bare husk at indkapsle de forskellige elementer i parenteser, på den rigtige måde.

Arrays

Med arrays er det let at opbevare en række data, for derefter at udskrive dem eller du nu synes kunne være interessant at gøre. Det er fx meget normalt at man kan få et array af data ud af en database, som så kan udskrives en efter en. Jeg vil vise lidt simplere eksempler på arrays, der gerne skulle give et godt indtryk af hvor smarte arrays kan være i specielle situationer.
<?
$ugensdage = array("Søndag","Mandag","Tirsdag","Onsdag",
                "Torsdag","Fredag","Lørdag");
$today = date("w", time());
 echo "I dag er det $ugensdage[$today]";
?>
Vi starter med at definere et array, kaldet $ugensdage. Vi putter med det samme ugens syv dage ind i array’et, blot adskilt af et komma. Du undrer dig måske over hvorfor Søndag er den første dag i array’et, men det er for at det passer når vi senere bruger date funktionen (som vi også brugte i forrige artikel) til at finde nummeret på den dag det er. I fx USA er det nemlig sådan at en uge starter om søndagen, hvor den i Danmark starter om mandagen. Er det søndag vil funktionen derfor returnere 0, 1 for mandag, 2 for tirsdag osv. Det passer hvis vi sætter søndag ind på den første plads i array’et, som er plads 0. Vi henter altså nummeret på dagen med date funktionen. Når vi har den kan vi sige at det i dag er "$arrayoverdage[$nummerpådag];" via vores PHP kode. Ganske smart! Samme trick ville kunne laves med fx navne på måneder eller lignende. Et andet eksempel på brug af arrays kan du læse nedenunder, når vi kombinerer det med en løkke!

Løkker

Når man skal have gjort en vis ting X antal gange, er løkker en genial ting! Det kan være noget helt simpelt, som fx at skrive sit eget navn 10 gange på en side, eller noget lidt mere anvendeligt som fx at hente alle rækker ud af en database og vise dem en efter en, med kun få linier kode! De 2 typer løkker jeg selv normalt bruger, er while og for løkkerne. De er kendt fra utroligt mange programmeringssprog, og er gode på hver sin måde. Jeg vil vise et par simple eksempler, for at vise hvor relativt simpelt det er at bruge dem!
<?
// vi starter med en for løkke
$antalgange = 10;
$navn = "Kasper";
for ($i = 1; $i <= $antalgange; $i++) {
    echo "$i - Mit navn er $navn<br>";
}
?>
Koden kunne godt være lidt simplere, men for overskuelighedens skyld har jeg lige fyldt lidt ekstra på, der gerne skulle gøre eksemplet lettere at forstå. Vi starter med at definere 2 variabler. Den første indeholder en talværdi, der senere fortæller hvor mange gange vi vil have at løkken skal gentage sig selv. Med den anden definerer vi et navn, som bliver udskrevet senere. Derefter starter vi så løkken. For strukturen består af 3 elementer: med det første sætter vi variablen $i til 1. Næste led fortæller at løkken skal køre indtil $i er = $antalgange (10 i dette eksempel). Det sidste tager $i og lægger en til (svarer til at sige $i = $i +1;). På den måde vil det sidste led sørge for at $i hele tiden er en højere hver gang løkken køres, og til sidst ende på 10, hvorefter løkken jo stoppes. Inde i selve løkken gør vi kun en ting, nemlig at udskrive lidt tekst. For at det ikke skal blive alt for kedeligt/simpelt har jeg blandet lidt variabler ind i det. Således udskrives $i først, som jo hele tiden bliver en højere. Desuden udskrives $navn, som jo kan ændres. Ganske simpelt! Lad os prøve det samme med en while løkke.
<?
$antalgange = 10;
$navn = "Kasper";
while($i < $antalgange) {
    $i++;
    echo "$i - Mit navn er $navn<br>";
}
?>
Flere af tingene fra før går igen, dem vil jeg ikke forklare! Måden while bruges på er dog lidt anderledes end for. Her sætter vi kun betingelsen, som er at $i skal være = $antalgange, i selve while kommandoen. Inde i løkken udskriver vi samme tekst som før, og sørger samtidig for at tælle en op på $i. Glemmer du at gøre det, vil $i jo aldrig blive = $antalgange, og du vil have skabt en uendelig løkke. Som et sidste eksempel, vil jeg kombinere en løkke og et array, så vi kan udskrive en liste over ugens dage, med rimeligt få linier kode. Det kan måske virke lidt overdrevet at skrive så "avanceret" kode bare for at udskrive ugens dage, men husk på at det kun er et eksempel, der let kunne gøres langt mere omfattende!
<?
$ugensdage = array("Søndag","Mandag","Tirsdag","Onsdag",
                "Torsdag","Fredag","Lørdag");
for ($i = 0; $i <= count($ugensdage); $i++) {
	echo "$ugensdage[$i]<br>";
}
?>
Det eneste nye vi har med her, er sådan set funktionen count, der her bruges til at finde antallet af elementer i array’et. Ellers er der ikke rigtigt noget nyt. Det var så part 2 af min artikelserie, og jeg regner med at jeg vil skrive mindst et par artikler mere. Næste gang vil jeg nok starte på hvordan man kommer i gang med at bruge en MySQL database sammen med PHP, for at forny mine meget gamle artikler her på sitet. Med mindre i har nogle andre ting i mener der bør gennemgås først? Forslag er velkomne :)



Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.

Del også gerne artiklen med dine Facebook venner:  

Kommentarer (12)

User
Bruger #2959 @ 09.01.03 19:20
Jeg syntes at din part 2 er meget god. Men part et var bedere. Men det er sikkert fordi at den var nemmere. Men kan du ikke prøve at forklare while løkker. Det forstod jeg ikke helt men ellers var den god nok. Jeg lærte noget af den. Og det er jo meningen med artiklerne her på udvikleren. :)
User
Bruger #2165 @ 01.03.03 18:02
Rigtig god artikel! Bedre end 1 del!
User
Bruger #5566 @ 19.05.04 17:48
Nice Arktikel!
User
Bruger #4753 @ 06.06.04 17:19
God artikel, men er det muligt du kan skrive hvordan man bruger løkker i databaser du siger man kan hive enkelte linier ud, det ville være fedt hvis du kan forklarer nærmere om det.
User
Bruger #5956 @ 28.06.04 19:11
Rigtig god artikel! Har aldrig rigtigt fatter løkker, Det gør jeg nu : ).. Tak tak
User
Bruger #7423 @ 24.09.05 19:16
God artikel!
User
Bruger #9809 @ 17.06.06 13:19
Er det meningen at $i ikke skal definerens i dit while loop ligesom den skal når du bruger for?
User
Bruger #10423 @ 25.08.06 22:21
God artikel
Du er rigtig god til at beskrive tingene, så målgruppen de mindre øvede også har en chance for at få fatte meningen med de forskellige kommandoer.
Rigtig god artikel!
User
Bruger #11195 @ 22.01.07 17:07
Jeg er ret noob til PHP, men med part 1 og 2 har jeg faktisk lært en hel masse. Godt du forklarer det så meget! Rigtig god artikel. (:
User
Bruger #13073 @ 11.01.08 19:42
Rigtig god artikel!
Jeg er virkelig ny inden for PHP, og nu har jeg fået et kendskab til dette fantastiske sprog! - Nu ville jeg lege lidt med det. ^^

Bare der kom en part 3. :)

//Kristian\\\
User
Bruger #14181 @ 01.10.08 18:41
Hvorfor i alverden skriver du ik:

Fold kodeboks ind/udKode 


Det vil jeg nok mene er mere korrekt, da du så kan bruge funktioner på dine varialber i if sætningen.
F.eks.
Fold kodeboks ind/udKode 


User
Bruger #4487 @ 06.05.10 22:03
Jeg prøvede lige selv at udvide din "vis dato" med array ekspempel.
Fold kodeboks ind/udPHP kode 

Problemet er at når den viser datoen, så bliver den datoen fra igår

Eksemepel: Den rigtige dato er f.eks. Torsdag d. 6 maj, men output fra php bliver: Torsdag d. 5 maj

Kan nogle fortælle mig hvad der er galt?
Du skal være logget ind for at skrive en kommentar.
t