23. maj 2006 - 23:29Der er
15 kommentarer og 1 løsning
Hvordan tjekker jeg værdien i et array i mod en værdi i en løkke?
Jeg har en løkke der giver mig et variabelt antal værdier. Disse værdier skal enkeltvis vurderes i forhold til indholdet i et array. Jeg har pt denne løsning til at splitte arrayet op med, men kan ikke gennemskue næste træk. Smider koden her: Denne kode ligger altså inde i en While-løkke.
Dim Array Dim iArrayLength, i Array = Split( (KursusUnik.Fields.Item("Emneord_Kurser").Value), ",") iArrayLength = UBound(Array)
For i = 0 to iArrayLength Response.Write(Array(i)) Next
Jeg har pt. bare ladet den udskrive Arrayet, men har bruger noget ala: if array(i) = nyvariabel then response.write("de passer sammen!") end if Jeg er strandet her og håber der er en derude der kan pege på en ide/løsning. Takker
jeg kan ikke helt forstå hvad du mener, hvis du har værdien i nyvariabel så kan du jo bare sammenligne som du skriver - og så har du jo selv løst problemet. Men er det den som også er et array?
Først og fremmest er det en DÅRLIG idé at navngive sine variable med navne på funktioner der allerede eksisterer i sproget (Array er en af denne slags) - det kan give fejl som er svære at finde... hvis man ikke lige er opmærksom på dette sammenfald.
Når det så er sagt kan jeg ikke helt gennemskue hvad du rent faktisk står med af data (et array og hvad mere)?
Jeg har et array: "hund,ko,kat,hest" Det ligger inde i en løkke der returnerer værdierne fra en tabel i databasen, f.eks. "ko, so, fisk og hest" Jeg har brug for at vurdere om værdien "ko" indgår i mit array, og hvis den gør, så skal den tjekkes af i en tjekbox, dvs. skrive "checked". I dette eksempel skal der altså findes et match når løkken skriver ko og hest, altså første og sidste gang jeg looper igennem tabellen. Undskylder for børnehaveeksemplet, men det var lige det jeg kunne komme på..;-)
Jeg har nu løst det ved at lave et nyt db-udtræk der tjekker værdien op imod løkken, og hvis der er poster i dette, så er der et match. Det er ikke den smarteste løsning men den virker. Vil meget gerne høre om der er en bedre løsning.
Du kan lave en regular expression på strengen af hver værdi (i stedet for at omsætte databaseværdien til et array). Alternativt kunne du benytte instr til at søge efter hver værdi i dit array.
Jeg er ikke helt med på problemet, hvis du har et array som indeholder ko,so,hest er du så ikke sikker på, at de samme værdier findes i databasen eller hvad? Hvis de ikke findes, vil du så kun have dem skrevet ud som findes begge steder?
Hvis du kun vil have de værdier som findes både i arrayet og i databasen kan du også lave noget ala: mitArraySomStreng="'so','ko','kat'" SQL="SELECT * FROM tabel WHERE dyr IN ("&mitArraySomStreng&");" man skal dog huske '' om dyret hvis man bruger ovenstående.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.