login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Arrays sorteren over groepen

Offline Sitefoon - 01/04/2006 20:07 (laatste wijziging 01/04/2006 20:18)
Avatar van SitefoonNieuw lid ik wil graag van een array de waardes verdelen over een aantal groepen (die dan eruitzien als arrays) ik kom er maar niet uit
weet iemand hoe ik dit moet doen?

7 antwoorden

Gesponsorde links
Offline BigBug - 01/04/2006 20:19
Avatar van BigBug PHP expert En waarop wou je ze sorteren dan? 
Offline Sitefoon - 01/04/2006 20:20 (laatste wijziging 01/04/2006 20:29)
Avatar van Sitefoon Nieuw lid ik heb een array met een aantal verschillende waardes (personen)

ik wil random die personen over groepen kunnen verdelen
maar dat personen dan maar 1 keer worden ingedeeld
Offline kokx - 01/04/2006 20:35 (laatste wijziging 01/04/2006 20:40)
Avatar van kokx Onbekend Ik maak er ff een functie voor.

Edit: Dit is het geworden:
  1. <?php
  2. function shift_array_over_groups($array, $rows = 2){
  3. $return = array();
  4. while($piece = array_shift($array)){
  5. $rand = rand(0, $rows);
  6. $return[$rand][] = $piece;
  7. }
  8. return $return;
  9. }
  10. $array = array("kokx", "murfy", "joel", "ontani");
  11. $array = shift_array_over_groups($array, 3);
  12. echo "<pre>";
  13. var_dump($array);
  14. echo "</pre>";
  15. //zal een random array opleveren
  16. ?>
Offline Sitefoon - 01/04/2006 20:40 (laatste wijziging 03/04/2006 11:56)
Avatar van Sitefoon Nieuw lid hoe kan ik die array nu verder verwerken en hoe is hij opgebouwd want wat hier uitkomt snap ik niet helemaal:


http://vrijdagmiddag.ath.cx/Tim/random.php

weet iemand hoe die array nu is opgebouwd?

kan iemand mij helpen??
Offline BramBo - 03/04/2006 12:01
Avatar van BramBo JS gevorderde Array
- Array
-- naam
-- naam
- Array
-- naam

het aantal "sub-arrays" dat hij opbouwd kan je opgeven in die functie. Verder als je vraag iets specifieker opsteld kunnen we misschien meer voor je betekenen.
Offline Sitefoon - 03/04/2006 16:39 (laatste wijziging 03/04/2006 17:38)
Avatar van Sitefoon Nieuw lid ik wil dus zoals hierboven al staat,

een input hebben van: personen(X) en aantal personen per groep(Y)
de personen worden gescheiden met komma's en staan tussen ' '

de output moet zo zijn dat ik een aantal array's heb met het aantal van Y in waardes

dus bijvoorbeeld:

inputX= 'jan', 'piet', 'klaas', 'hans'
inputY= 2

output=
$groep['0']['0'] = 'piet';
$groep['0']['1'] = 'hans';
$groep['1']['0'] = 'jan';
$groep['1']['1'] = 'klaas';

hierin is dit de opbouw:
$groep[groep][lid]


en dat dan dus random


ik heb net wat zitten proberen en nu heb ik dit:

  1. <?php
  2. function verdeel($personen, $personen_per_groep)
  3. {
  4. $string = $personen;
  5. $array = explode("; ", $string);
  6. $x=0;
  7. while ($x<count($string))
  8. {
  9. $person[$x]['naam'] = $array[$x];
  10. $person[$x]['ingedeeld'] = 0; // aangeven of is ingedeeld (1 is wel 0 is niet)
  11. $x++;
  12. }
  13. $aantal = count($string);
  14. $aantalg = $personen_per_groep \ $aantal;
  15. $y = 0; // aantal groepen
  16. $z = 0; // aantal leden
  17. $a = 0; // random getal
  18. $b = 0; // aantal mensen
  19. while ($b < $aantal)
  20. {
  21. while ($y < $aantalg)
  22. {
  23. while ($z < $personen_per_groep-1)
  24. {
  25. $a = rand(0, $aantal+1);
  26. $arring = $person[$a]['ingedeeld'];
  27. if ($arring == 0)
  28. {
  29. $groep[$y][$z] = $person[$a]['naam'];
  30. $person[$a]['ingedeeld'] = 1;
  31. $b++;
  32. $z++;
  33. }
  34. }
  35. $y++;
  36. }
  37. }
  38. }
  39. ?>


klopt dit dan een beetje:?:
Offline lasdesigner - 03/04/2006 19:13
Avatar van lasdesigner PHP beginner Regel 23
  1. <?php
  2. while ($z < $personen_per_groep-1)
  3. ?>


zou ik niet zo doen (heb niet getest of dit ook kan, maar dit is handiger/beter toch?):

  1. <?php
  2. while ($z < ($personen_per_groep-1))
  3. ?>


Voor de rest ziet het er ook goed uit! 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.222s