[PHP] Hutsel werkt niet.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Mensen, ik heb altijd het onderstaande stukje code gebruikt om het 1 en ander te hutselen. Resultaat was een random weergave van afbeeldingen op een pagina. Maar.....
het werkt nu niet meer. Misschien dat er tussendoor wel iets 'gebeurd' is bij het updaten, maar iuk kan me dat niet voorstellen.

Mijn vraag daarom aan jullie is om even over de code heen te kijken en eventueel opmerkingen te geven?

De opzet is om een array in te vullen vanuit een bestand waar de waardes in staan. Vervolgens hutselt de array_rand de unieke nummers door elkaar. Deze gooi ik in een loop om ze door elkaar af te drukken zodat ik ze standaard kan aanroepen met bijv: <?php echo $LogoPlek[1]; ?>

Misschien is het niet de meest logische manier, maar zo is het destijds in elkaar gezet, en ik heb weinig zin om de hele website weer opnieuw op te bouwen.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php

srand((float) microtime() * 10000000);
$rnr = array();
$Logo = array(); 
$Titel = array();
$Adres = array();
// ---------------------------------------
// Logo bestandsnaam en info
include("gegevensbestand.txt");
// ---------------------------------------
$rand_keys = array_rand($rnr, count($rnr));

$i = 0;
while($i <= count($rnr)) {
$RandNr = $rnr[$rand_keys[$i]];
$LogoPlek[$i] = $Logo[$RandNr];
$TitelPlek[$i] = $Titel[$RandNr];
$AdresPlek[$i] = $Adres[$RandNr];
$i++;
}  

?>


Wat mij al opviel:
De code lijkt de array waardes niet meer te husselen. Hij drukt ze gewoon op volgorde af.

[ Voor 3% gewijzigd door Verwijderd op 17-11-2009 01:24 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Waarom al die moeite? :?

[ Voor 4% gewijzigd door NMe op 17-11-2009 01:26 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Tis een verzamel website van het 1 en ander. Anders komt er gezeur dat er steeds dezelfde mensen bovenaan staan. :P

Acties:
  • 0 Henk 'm!

  • gertvdijk
  • Registratie: November 2003
  • Laatst online: 09-09 10:57
Typisch voorbeeld van het wiel opnieuw uitvinden imo. Er bestaat al zoiets in de vorm van één functie: shuffle()

Kia e-Niro 2021 64 kWh DynamicPlusLine. See my GitHub and my blog for articles on security and other stuff.


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op dinsdag 17 november 2009 @ 01:27:
Tis een verzamel website van het 1 en ander. Anders komt er gezeur dat er steeds dezelfde mensen bovenaan staan. :P
...wat ook de reden is dat er een linkje onder mijn vraag zit. Je hele code kan zo ongeveer vervangen worden met die ene functiecall.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dat zag ik later ook al. :P Ben ff aan het experimenteren.. Monumentje.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Potverdikkeme.. Wat een resultaat..

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$rnr = array();
$Logo = array(); 
$Titel = array();
$Adres = array();
// ---------------------------------------
// Logo bestandsnaam en info
include("gegevensbestand.txt");
// ---------------------------------------
$i = 0;
shuffle($rnr);
foreach ($rnr as $number) {
$LogoPlek[$i] = $Logo[$number];
$TitelPlek[$i] = $Titel[$number];
$AdresPlek[$i] = $Adres[$number];
$i++;
}

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Overigens hoop ik niet dat dit kleine voorbeeldje laat zien hoe je met inspringen omgaat in je code. ;) Niet inspringen is behoorlijk onhandig.

Daarnaast zou ik eerder zoiets doen:
PHP:
1
2
3
4
shuffle($rnr);
foreach ($rnr as $number) {
  $Plek[] = array('Logo' => $Logo[$number], 'Titel' => $Titel[$number], 'Adres' => $Adres[$number]);
}

Je hebt dan één associatief array met al je waarden (in plaats van 3 losse) en je hebt die countervariabele niet nodig.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1