Avatar billede rthuls Nybegynder
22. maj 2004 - 20:03 Der er 5 kommentarer og
1 løsning

radomize multidimensional array

Jeg benytter nedenstående kode til at skabe en multidimensional array.


class oData{
    var $id, $navn, $adresse;
    function oData($id, $navn, $adresse){
        $this->id = $id;
        $this->navn = $navn;
        $this->adresse = $adresse;
    }
}

$result = @mysql_query("SELECT * FROM butikker");
$butikker = array();
while ($n = @mysql_fetch_array($result)){
    $butikker[] = new oData($n['id'], $n['navn'], $n['adresse']);
}


Hvordan kan jeg, for at bruge et godt dansk ord, radomize mit array? De individuelle id, navn og adresse hører sammen og skal blive ved med at hører sammen. Det er rækkefølgen på hvert sæt id, navn, adresse, der skal radomizes.
Avatar billede soreno Praktikant
22. maj 2004 - 20:10 #1
Avatar billede jakoba Nybegynder
22. maj 2004 - 20:14 #2
Det nemmeste er at lade SQL gøre det:
  $result = @mysql_query("SELECT * FROM butikker ORDER BY RAND()");
så får du rækkerne i tilfældig rækkefølge.
Avatar billede coderdk Praktikant
23. maj 2004 - 03:19 #3
$enbutik = array_rand( $butikker, 1 );

Se http://dk.php.net/array_rand
Avatar billede rthuls Nybegynder
23. maj 2004 - 11:44 #4
shuffle fungerer perfekt i det tilfælde her.
soreno smider du et svar?
Avatar billede soreno Praktikant
23. maj 2004 - 12:39 #5
Ok.
Avatar billede Slettet bruger
23. maj 2004 - 21:26 #6
Egentlig har du jo heller ikke et multidimensionelt array. Det er bare et simpelt endimensionelt array, hvor de enkelte elementer bare er objekter.

Du ville have haft et multidimensionelt array, hvis du havde gjort således:

while ($n = @mysql_fetch_assoc($result)){
    $butikker[] = $n;
}

Forresten: Når du alligevel ikke bruger de numeriske nøgler fra dit databaseopslag, så kan du lige så godt bruge mysql_fetch_assoc i stedet for mysql_fetch_array. Der er jo ingen grund til at hente dobbelt så meget, som man har brug for. Prøv med:

while ($n = @mysql_fetch_array($result)){
    print_r($n);
}

for at se, hvad jeg mener.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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