login  Naam:   Wachtwoord: 
Registreer je!
 Forum

array met waardes top 5 waardes displayen.

Offline Tuinman - 30/10/2009 14:27
Avatar van TuinmanNieuw lid Ey Allemaal,

Ik heb een array en die ziet er als volgt uit.
  1. (
  2. [Techniek] => 8
  3. [Laboratorium] => 8
  4. [Boekhandel] => 6
  5. [Entertainment] => 6
  6. [Wetenschap] => 4
  7. [Economie] => 4
  8. [Muziek] => 2
  9. [Wiskunde] => 2
  10. )


Nou wil ik de top 5 displayen dit doe ik door de array_slice functie te gebruiken. Alleen nu hebben sommige categorieën de zelfde waarde.
Dus ik wil eigenlijk de volgende output krijgen.
  1. (
  2. [Techniek] => 8
  3. [Laboratorium] => 8
  4. [Boekhandel] => 6
  5. [Entertainment] => 6
  6. [Wetenschap] => 4
  7. [Economie] => 4
  8. )

Dit bereik ik niet met de array_slice functie dus ik hoop dat iemand mij de oplossing kan geven.

Mocht mijn vraag niet duidelijk zijn dan hoor ik het wel.

Greetz Tuinman

8 antwoorden

Gesponsorde links
Offline ArieMedia - 30/10/2009 14:28
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
PHP.net: sort

tellen tot 5 in een loopje en voilla.
  1. for($i=0; $i<5; $i++) {
  2. echo $aArray[$i].'<br>';
  3. }
Offline Tuinman - 30/10/2009 14:32
Avatar van Tuinman Nieuw lid Ey,

Nee je snap mijn punt niet met array_slice krijg ik er ook wel 5 uit.
Alleen het punt is als je mijn begin array ziet dan hebben wetenschap en economie dezelfde waarde.

Nu wordt wetenschap wel getoond omdat hij nummer 5 is alleen economie heeft dezelfde waarde en moet ook getoond worden.

Het is dus niet echt een top 5 het ligt eraan of er nog meer categorieën zijn die dezelfde waarden hebben als de nummer 5.

Hopelijk is het iets duidelijker.
Offline ArieMedia - 30/10/2009 14:43 (laatste wijziging 30/10/2009 14:46)
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Je kan dan nogsteeds PHP.net: sort gebruiken en een loop

  1. // uitgaand dat $aArray de goed gesorteerde array bevat
  2. $iMax = $aArray[4]; // dus de nummer 5
  3. for($i=0; $iMax<$aArray[$i]; $i++) {
  4. // doe iets
  5. }


Stukkie is untested, zal je zelf even moeten testen

Edit: Zoiets moet het worden,.. kan het nu niet verder uitpluizen voor je ivm werk wat er ligt 
Offline Tuinman - 30/10/2009 14:53
Avatar van Tuinman Nieuw lid Ey,

Ik heb het toegepast alleen ik krijg de waarde economie eruit.
Maar ik denk/weet zeker dat ik die waarde moet hebben om te kunnen checken of het de goede is.
Enig idee hoe ik die waarde krijg in plaats van economie?

Greetz
Offline avdg - 30/10/2009 15:30
Avatar van avdg PHP gevorderde bedoel je dit?

binnen de lus
  1. $key = $aArray[$i]; //sleutel
  2. $value = $aArray[$i][$key]; //value van key
Offline ArieMedia - 30/10/2009 15:44
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
avdg schreef:
bedoel je dit?

binnen de lus
[..code..]

Dat is het niet, want anders zou hij "array" te zien krijgen ipv "economie"

Wat hij dus moet echoen is vanuit de oude array


  1. // uitgaand dat $aOldArray de ongesorteerde array is
  2. // uitgaand dat $aArray de goed gesorteerde array bevat
  3. $iMax = $aArray[4]; // dus de nummer 5
  4. for($i=0; $iMax<$aArray[$i]; $i++) {
  5. echo $aOldArray[$aArray[$i]];
  6. }


Ook deze code is niet getest, en denk dat hij het eerder niet doet dan wel doet, wat ik iniedergeval wil zeggen is dat je de oude array nu kan gebruiken.
Offline Tuinman - 31/10/2009 09:00
Avatar van Tuinman Nieuw lid Ey,

Ik heb het getest maar er komt geen waarde tevoorschijn.
Dus het werkt niet, dit had je al verwacht 
Heeft iemand nog een idee hoe ik tot een resultaat kom.

Greetz
Offline Esli - 31/10/2009 11:22
Avatar van Esli PHP interesse
  1. <?php
  2. $punten = Array
  3. (
  4. 'Techniek' => 8,
  5. 'Laboratorium' => 8,
  6. 'Boekhandel' => 6,
  7. 'Entertainment' => 6,
  8. 'Wetenschap' => 4,
  9. 'Economie' => 4,
  10. 'Muziek' => 2,
  11. 'Wiskunde' => 2
  12. ); //De array met de vakken in en hun bijhorende punt
  13.  
  14.  
  15. arsort($punten, SORT_NUMERIC); //Zorgen dat de array wordt gesorteerd volgens nummer
  16. $teller = 0; //Een teller maken (start vanaf 0)
  17.  
  18. echo '<h1>De top 5 (al dan niet met exequo\'s)</h1> ';
  19. echo '<ul>';
  20. foreach ($punten as $vak => $punt) //De gesorteerde array uitlezen
  21. {
  22. $teller++; //De teller + 1
  23. if($teller<6 || $vorig_punt == $punt) //Kijken of de teller max. 5 waarden weergeeft OF dat de laatste output dezelfde is als de volgende
  24. {
  25. echo '<li>Op plaats ' . $teller . ' staat het vak "' . $vak . '" met ' . $punt . ' punt(en)</li>' . "\n";
  26. $vorig_punt = $punt; //het vorige punt "opslaan"
  27. }
  28. }
  29. echo '</ul>'
  30. ?>


Dit doet het volgens mij wel?
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.264s