ceskyDJ

Zapeklité skupiny xD

Aug 3rd, 2016
332
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.40 KB | None | 0 0
  1. <?php
  2.  
  3. // Hráči z databáze
  4. $players = [1, 2, 3, 4, 5, 6, 7];
  5.  
  6. // Skupiny z databáze
  7. $groups = [
  8.     0 => [
  9.         'id' => 1,
  10.         'max_players' => 1,
  11.         'players' => '',
  12.     ],
  13.     1 => [
  14.         'id' => 2,
  15.         'max_players' => 2,
  16.         'players' => '',
  17.     ],
  18.     2 => [
  19.         'id' => 2,
  20.         'max_players' => 4,
  21.         'players' => '',
  22.     ],
  23. ];
  24.  
  25. // Počet hráčů
  26. $player_sum = count($players);
  27.  
  28. // Počet skupin
  29. $group_sum = count($groups);
  30.  
  31. // Číslo skupiny pro použití
  32. $group_index = 0;
  33.  
  34. // Dokud jsou dostupní hráči probíhá cyklus
  35. for($i = 0; $i < $player_sum; $i++) {
  36.     // Aktuální počet hráčů ve skupině
  37.     // Pokud není řetezec prázdný (je určen alespoň jeden hráč)
  38.     if($groups[$group_index]['players'] != '') {
  39.         // Spočítání podle vytvořeného pole a spočítání jeho klíčů
  40.         $array_of_players = explode(',', $groups[$group_index]['players']); // Vytvoření pole hráčů, aby šli spočítat klíče
  41.         $actual_player_sum_in_group = count($array_of_players); // Spočítání počtu klíčů
  42.     }
  43.     // Pokud je prázdný řetezec (není určen žádný hráč)
  44.     else {
  45.         // Nastavit autoaticky na nulu
  46.         $actual_player_sum_in_group = 0;
  47.     }
  48.    
  49.     // Maximální počet hráčů ve skupině
  50.     $max_players_in_group = $groups[$group_index]['max_players'];
  51.    
  52.     // Pokud ještě není skupina naplněna
  53.     if($actual_player_sum_in_group < $max_players_in_group) {
  54.         // Přidání hráče do skupiny
  55.         // Pokud se jedná o prvního hráče u dané skupiny
  56.         if($i < $group_sum) {
  57.             // Nepřidávat čárku na začátek (přidal by se i index a systém se rozbil)
  58.             $groups[$group_index]['players'] .= $players[$i];
  59.         }
  60.         // Pokud již skupina má alespoň jednoho hráče
  61.         else {
  62.             // Přidat čárku na začátek, aby se dalo vytvořit pole
  63.             $groups[$group_index]['players'] .= ',' . $players[$i];
  64.         }
  65.  
  66.     }
  67.     // Skupina je již naplněna -> Hráč nebyl použit
  68.     else {
  69.         // Odečíst index hráče, aby mohl být znovu použit při vkládání do jiné skupiny (dalším průběhu cyklu)
  70.         $i--;
  71.     }
  72.    
  73.     // Pokud je ještě další skupina v řadě
  74.     if($group_index < $group_sum - 1) {
  75.         // Přičíst hodnotu do indexu
  76.         $group_index++;
  77.     }
  78.     // Pokud se jedná o poslední skupinu
  79.     else {
  80.         // Začít od začátku
  81.         $group_index = 0;
  82.     }
  83. }
  84.  
  85. // Výpis výsledku
  86. print_r($groups);
Add Comment
Please, Sign In to add comment