---
title: "Array-funktion"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/13182-array-funktion"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Skarre"
published: "2001-12-13T08:00:00.000Z"
updated: "2001-12-14T02:42:00.000Z"
replies: 7
views: 221
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/13182-array-funktion"
---

# Array-funktion

## #1 — Skarre, 2001-12-13T08:00Z

Jag har försökt modifiera nedanstående funktion som jag lärt mig från 4guysfromrolla för att den ska klara multidimensionella arrayer, men jag lyckas inte komma på hur jag ska göra och hoppas att någon kan hjälpa mig på traven. Jag försökte först helt sonika byta värden i alla dimensioner, men eftersom vissa dimensioner har olika antal index blir det problem med hur många gånger loopen ska loopa. Om första dimensionen har 4 index och en annan 50 så byts ju bara värden på fyra index.

```
Function ReArrange(ByVal arrArray)

    intUpper = UBound(arrArray)
    intLower = LBound(arrArray)

    Randomize Timer

    For i = intLower to intUpper
        'Slumpar fram ett arrayindex att byta med originalet.
        intSwapPos = Int(Rnd * (intUpper + 1))

        'Byter värden mellan slumpat index och originalindex.
        varTmp = arrArray(i)
        arrArray(i) = arrArray(intSwapPos)
        arrArray(intSwapPos) = varTmp
    Next
    ReArrange = arrArray
End Function
```

Permalänk: https://www.webforum.nu/p/13182

## #2 — LarsG, 2001-12-13T08:44Z

Räcker det om den klarar tvådimensionella arrayer?

```
Function ReArrange(ByVal arrArray)
intUpper = UBound(arrArray)
intLower = LBound(arrArray)

Randomize Timer

For i = intLower to intUpper
'Slumpar fram ett arrayindex att byta med originalet.
intSwapPos = Int(Rnd * (intUpper + 1))

'Byter värden mellan slumpat index och originalindex.
for j = Lbound(arrArray,2) to Ubound(arrArray,2)
varTmp = arrArray(i,j)
arrArray(i,j) = arrArray(intSwapPos,j)
arrArray(intSwapPos,j) = varTmp
Next
Next
ReArrange = arrArray
End Function
```

Permalänk: https://www.webforum.nu/p/300782

## #3 — Skarre, 2001-12-13T09:15Z

Jag var nog inte tillräckligt klar i huvudet när jag ställde frågan. :x

Jag tänkte använda funktionen för att röra om ordningen i en array som skapats med getrows() och då ska ju den första dimensionen inte arrangeras om. Det jag vill åstadkomma är att alla värden i den andra dimensionen arrangeras om  men att de ändå behåller integriteten (heter det så?) sinsemellan. Förklaringen är inte helt lysande men förhoppningsvis förstår ni vad jag menar. :)

// Skarre

\[Redigerat av Skarre den 13 dec 2001\]

Permalänk: https://www.webforum.nu/p/300783

## #4 — Skarre, 2001-12-13T09:27Z

Någonting i den här riktningen kanske?

```
Function ReArrange(ByVal arrArray)

	intUpper1 = UBound(arrArray,1)
	intLower1 = LBound(arrArray,1)
	intUpper2 = UBound(arrArray,2)
	intLower2 = LBound(arrArray,2)

	Randomize Timer

	For x = intLower1 to intUpper1
		For i = intLower2 to intUpper2
			'Slumpar fram ett arrayindex att byta med originalet.
			intSwapPos = Int(Rnd * (intUpper2 + 1))

			'Byter värden mellan slumpat index och originalindex.
			varTmp = arrArray(x,i)
			arrArray(x,i) = arrArray(x,intSwapPos)
			arrArray(x,intSwapPos) = varTmp
		Next
	Next
	ReArrange = arrArray
End Function
```

Det problem jag inte lyckats lösa är ju då att de slumpade talen blir olika för varje index i den första dimensionen (kolumnerna i databasen). Tänker jag rätt här, eller är jag helt ute och cyklar?

Permalänk: https://www.webforum.nu/p/300784

## #5 — Skarre, 2001-12-13T09:32Z

Ehhh.. nu har jag testat min funktion ovan....

Glöm det, det fungerar inte.

// Skarre

\[Redigerat av Skarre den 13 dec 2001\]

Permalänk: https://www.webforum.nu/p/300785

## #6 — Skarre, 2001-12-13T10:59Z

Nu har jag trippelkollat databasen och det verkar som om funktionen trots allt fungerar, men jag förstår fortfarande inte hur det går till.

Den första loopen går igenom den första dimensionen (kolumnerna i databasen) och för varje sådan kolumn läggs värdena i indexen i dimensionen under i slumpad ordning. Sedan går den vidare till nästa index i den första dimensionen (nästa kolumn i databasen) och gör samma sak, men det sker en ny slumnpningen för varje index i den första dimensionen så borde ordningen bli annorlunda för varje gång. Som sagt, vad är det jag missar?

Permalänk: https://www.webforum.nu/p/300786

## #7 — Skarre, 2001-12-13T13:17Z

Är det ingen som tror sig veta hur detta går till? Jag vågar inte riktigt fortsätta förrän jag vet att jag kan lita på funktionen.

Permalänk: https://www.webforum.nu/p/300787

## #8 — Skarre, 2001-12-14T02:42Z

Det var nog bara bra att ni ignorerade mig för jag lyckades lösa det själv och det känns ju alltid bäst. :) Och det var inte särskillt komplicerat trots allt.

Så, här är den nu. Skarres schyssta funktion för att slumpa om ordningen i en getrows-array: ;)

```
Function ReArrange(ByVal arrArray)

	intUpper1 = UBound(arrArray,1)
	intUpper2 = UBound(arrArray,2)

	Randomize Timer

	For j = 0 To intUpper2
		'Slumpar fram ett arrayindex att byta med originalet.
		intSwapPos = Int(Rnd * (intUpper2 + 1))

		For x = 0 To intUpper1
			'Byter värden mellan slumpat index och originalindex.
			varTmp = arrArray(x,j)
			arrArray(x,j) = arrArray(x,intSwapPos)
			arrArray(x,intSwapPos) = varTmp
		Next
	Next

	ReArrange = arrArray

End Function
```

Permalänk: https://www.webforum.nu/p/300788

---

Tråden på webben: https://www.webforum.nu/amne/asp/13182-array-funktion
