Avatar billede mini-me Nybegynder
09. november 2007 - 15:36 Der er 13 kommentarer og
1 løsning

Uger i år + Array

Hej,

Jeg har et array bestående af uge1,uge5,uge7,uge10

Jeg vil løbe alle 52 uger på et år igennem hvis min uge1 findes skal den skrive hey din uge findes, og findes den ikke skal den sige din uge findes ikke.

Det er så tæt på weekend at jeg ikke lige selv kan gennemskue det ;-)
Avatar billede w13 Novice
09. november 2007 - 15:38 #1
Det forstår jeg ikke. Har du kun de 4 uger i dit array, som du skriver øverst? Men du vil løbe 52 uger igennem? Og eftersom der findes 52 uger, så er det vel ikke aktuelt at udskrive "Ugen findes ikke", eller hvordan? Jeg tror, jeg misforstår helt.. =)
Avatar billede mini-me Nybegynder
09. november 2007 - 15:52 #2
Jeg har et array som indeholder 4 uger (disse indikere at her er mit legeplads optaget)

Men jeg skal så også udskrive de 48 uger for min legeplads er ledig..
Avatar billede jensgram Nybegynder
09. november 2007 - 15:54 #3
$uge = 'uge1';

print isset($mit_array_med_uger[$uge]) ? 'hey, din uge findes' : 'din uge findes ikke';
Avatar billede jensgram Nybegynder
09. november 2007 - 15:55 #4
Hvis strengene ikke er keys, så skal du måske have fat i in_array i stedet:


print in_array($uge, $mit_array_med_uger) ? 'hey, din uge findes' : 'din uge findes ikke';
Avatar billede jensgram Nybegynder
09. november 2007 - 15:56 #5
Hold kæft, Jens.

Undskyld. Jeg kom lige fra PHP-kategorien :)

God weekend, og undskyld mig.
Avatar billede mini-me Nybegynder
09. november 2007 - 15:58 #6
Ellers tak for forsøget =)
Avatar billede mini-me Nybegynder
10. november 2007 - 12:47 #7
Andre der vil komme med et bud?
Avatar billede w13 Novice
10. november 2007 - 13:11 #8
Indeholder dit array "uge1","uge5"(...) eller bare "1","5"(...)?

Dette kunne muligvis gøre det:
----------------------------------------------------------------
arrWeeks=Array(1,5,7,10)

For i=1 To 52
  Found=false
  For j=LBound(arrWeeks) To UBound(arrWeeks)
    If arrWeeks(j)=i Then Found=true
  Next
  If Found=true Then Response.Write i&" er ledig<br>"&vbCrLf
Next
Avatar billede mini-me Nybegynder
10. november 2007 - 14:23 #9
Hmmm hvis jeg så har 10.000 legepladser, som alle indeholder et array med 1 til 52 uger, så bliver det script noget længe om at udføre..

Havde tænkt på noget i den her stil

arrFreeWeeks = split(rs("freeWeeks"),",")

for i = 1 to 52 
  if arrFreeWeeks(i) = true then
    response.write "ledig" 
    else
    response.write "ikke ledig"
  end if
next

Men ovestÅende virker ikke da jeg får en subscription out of range (når den finder en uge som ikke findes) men hvis man så kunne "catche" den error og så udskrive den som ikke ledig. Dette ville optimere scriptet en del!
Avatar billede w13 Novice
10. november 2007 - 14:35 #10
Den får subscript out of range, når du kun har 4 poster i arrayet, og den kører videre til post 5, som jo ikke findes. I øvrigt starter arrays på post 0, det har vi ikke lige taget højde for. Men vi kan gøre det på en anden måde. Prøv at lade være med at lave det til et array:
----------------------------------------
arrFreeWeeks=rs("freeWeeks")
for i=1 to 52
  if InStr(arrFreeWeeks,"uge"&i)>0 then
    response.write "Uge "&i&" er ikke ledig.<br>"
  else
    response.write "Uge "&i&" er ikke ledig.<br>"
  end if
next
-----------------------------------------
Du vil dog spare noget loadtid, hvis du ikke bruger response.write så ofte, men i stedet benytter en string, som du udskriver til sidst:
-----------------------------------------
arrFreeWeeks=rs("freeWeeks")
sWrite=empty

for i=1 to 52
  if InStr(arrFreeWeeks,"uge"&i)>0 then
    sWrite=sWrite&"Uge "&i&" er ikke ledig.<br>"
  else
    sWrite=sWrite&"Uge "&i&" er ledig.<br>"
  end if
next

Response.Write sWrite
sWrite=empty
Avatar billede w13 Novice
10. november 2007 - 14:55 #11
For at undgå, at "uge1" også finder "uge11","uge12",osv. skal det nok snarere være:
-------------------------------
arrFreeWeeks=rs("freeWeeks")&","

for i=1 to 52
  if InStr(arrFreeWeeks,"uge"&i&",")>0 then
    sWrite=sWrite&"Uge "&i&" er ikke ledig.<br>"
  else
    sWrite=sWrite&"Uge "&i&" er ledig.<br>"
  end if
next

Response.Write sWrite
sWrite=empty
Avatar billede mini-me Nybegynder
10. november 2007 - 15:50 #12
yes, det var løsningen på det. Smid et svar ;)
Avatar billede w13 Novice
10. november 2007 - 15:55 #13
Her er svar. =)
Avatar billede w13 Novice
11. november 2007 - 16:05 #14
Tak for point!
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester