I denne lektion kigger vi nærmere på hvad et array er, hvordan det bruges, og hvad det kan bruges til.
Lektionen kan godt virke lidt svært, hvis du aldrig har hørt om arrays før. Men prøv aligevel at læse den igennem - vi har forsøgt at gøre det så pædagoisk som muligt.
et array er en række indekserede elementer, hvor hvert element har et unikt identifikationsnummer.
Lyder det forvirrende ? Måske en lille smule - men det er faktisk ikke så svært.
Forestil dig en lang række af forskellige ord adskilt af kommaer. Det er en såkaldt kommaseparetet liste - og den kunne f.eks. se sådan her ud:
æbler, pærer, bananer, appelsiner, citroner
Så prøv at forestil dig at man opdeler listen ved hvert komma - og giver hvert afsnit et unikt fortløbende tal, sådan her:
Det du ser er et array. Vi kan f.eks. navngive dette array "frugter". Ideen er nu at vi kan kalde array'et med et tal, og få en værdi retur - sådan her:
frugter(0) = æbler
frugter(1) = pærer
frugter(2) = bananer
frugter(3) = appelsiner
frugter(4) = citroner
OK, det er systemet bag et array. Og lad os nu prøve at bruge det i praksis.
Lad os fastholde eksemplet med frugterne. Så vil vi kigge på trin for trin hvordan man gør. Først sætter vi en variabel lig listen med frugterne:
<% Dim frugtliste frugtliste = "æbler, pærer, bananer, appelsiner, citroner" %>
Dernæst bruger vi funktionen
Split til at lave opdelingen ved hvert komma:
<% Dim frugtliste, arrFrugter frugtliste = "æbler, pærer, bananer, appelsiner, citroner" arrFrugter = Split(frugtliste,",") %>
Sådan, "arrFrugter" er nu et array!
Læg mærke til at vi kaldte funktionen
Split med to argumenter:
Her bruger vi et komma som separator - men bemærk at man kan benytte alle tegn eller ord som separator.
Lad os prøve at kommentere scriptet og sætte det ind i et ASP dokument:
<html> <head> <title>Array</title> </head> <body> <% ' to variabler til liste og array Dim frugtliste, arrFrugter ' Kommasepareret liste frugtliste = "æbler, pærer, bananer, appelsiner, citroner" ' Lav et array ved at splitte listen ved kommaer arrFrugter = Split(frugtliste,",") ' Udskriv værdierne fra vores array Response.Write "<p>Listen med frugter indeholder:" Response.Write "<ul>" Response.Write "<li>" & arrFrugter(0) Response.Write "<li>" & arrFrugter(1) Response.Write "<li>" & arrFrugter(2) Response.Write "<li>" & arrFrugter(3) Response.Write "<li>" & arrFrugter(4) Response.Write "</ul>" %> </body> </html>
Dette eksempel er naturligvis meget simpelt, og det kan måske være lidt svært at få øje på fordelen ved at benytte et array til netop denne opgave. Men bare vent - arrays kan bruges til utroligt mange smarte ting.
Tilbage i lektion 5 lærte du om løkker. Nu vil vi kigge på hvordan du kan bruge en løkke til at gennemløbe et array.
Når man ved hvor mange elementer et array indeholder er det intet problem af definere løkken. Man starter simpelthen blot med 0 og lader løkken fortsætte til det antal elementer der findes. I eksemplet med frugterne ville man kunne gennemløbe arrayet sådan her:
<html> <head> <title>Array</title> </head> <body> <% ' to variabler til liste og array Dim frugtliste, arrFrugter ' Kommasepareret liste frugtliste = "æbler, pærer, bananer, appelsiner, citroner" ' Lav et array ved at splitte listen ved kommaer arrFrugter = Split(frugtliste,",") Response.Write "<p>Listen med frugter indeholder:" Response.Write "<ul>" ' Her bruges en løkke til at genneløbe arrFrugt For t = 0 to 4 Response.Write "<li>" & arrFrugter(t) Next Response.Write "</ul>" %> </body> </html>
Variablen t (som gennem løkken antager værdier fra 0 til 4) bruges altså til at kalde arrayet.
Men hvad hvis vi tilføjer endnu en frugt til listen med frugter? Det vil betyde at vores array også kommer til at indeholde et element mere - og dette element vil have identifikationsnummeret 5. Kan du se problemet? Så er vi nødt til at rette vores løkke, så det løber fra 0 til 5 - ellers kommer alle elementerne ikke med.
Ville det ikke være smart hvis vi automatisk kunne finde ud af hvor mange elementer et array indeholder?
Jo, og det er netop hvad vi kan gøre med funktionerne
Ubound og
Lbound, som returnerer henholdsvis det højeste og laveste identifikationsnummer i et array.
Dermed kan vi fastslå størrelsen af et hvilken som helst array. Dette kan udnyttes til at lave en løkke, som fungerer uanset antallet af elementer:
<% For t = LBound(arrFrugt) to UBound(arrFrugt) Response.Write arrFrugter(t) Next %>
Denne Løkke vil fungere uanset hvor mange eller få elementer et array indeholder.
Her kommer endnu et eksempel på hvordan du kan benytte et array. Denne gang til at få skrevet månedens navn:
<html> <head> <title>Array</title> </head> <body> <% ' en variabel til måneder Dim arrMaaneder ' Bemærk komma før januar - da der findes ikke nogen måned med nummeret 0 arrMaaneder = Array(,"jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec") ' Kald array med månedens nummer - skriv til klienten Response.Write arrMaaneder(Month(Date)) %> </body> </html>
Det interessante her er at vi benytter funktionen
Array istedet for funktionen
Split til at lave et array.
OK? Nu tror jeg at du har læst nok om arrays - den næste lektion handler om hvordan du kan skrive dine egne funktioner.