Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- // Hráči z databáze
- $players = [1, 2, 3, 4, 5, 6, 7];
- // Skupiny z databáze
- $groups = [
- 0 => [
- 'id' => 1,
- 'max_players' => 1,
- 'players' => '',
- ],
- 1 => [
- 'id' => 2,
- 'max_players' => 2,
- 'players' => '',
- ],
- 2 => [
- 'id' => 2,
- 'max_players' => 4,
- 'players' => '',
- ],
- ];
- // Počet hráčů
- $player_sum = count($players);
- // Počet skupin
- $group_sum = count($groups);
- // Číslo skupiny pro použití
- $group_index = 0;
- // Dokud jsou dostupní hráči probíhá cyklus
- for($i = 0; $i < $player_sum; $i++) {
- // Aktuální počet hráčů ve skupině
- // Pokud není řetezec prázdný (je určen alespoň jeden hráč)
- if($groups[$group_index]['players'] != '') {
- // Spočítání podle vytvořeného pole a spočítání jeho klíčů
- $array_of_players = explode(',', $groups[$group_index]['players']); // Vytvoření pole hráčů, aby šli spočítat klíče
- $actual_player_sum_in_group = count($array_of_players); // Spočítání počtu klíčů
- }
- // Pokud je prázdný řetezec (není určen žádný hráč)
- else {
- // Nastavit autoaticky na nulu
- $actual_player_sum_in_group = 0;
- }
- // Maximální počet hráčů ve skupině
- $max_players_in_group = $groups[$group_index]['max_players'];
- // Pokud ještě není skupina naplněna
- if($actual_player_sum_in_group < $max_players_in_group) {
- // Přidání hráče do skupiny
- // Pokud se jedná o prvního hráče u dané skupiny
- if($i < $group_sum) {
- // Nepřidávat čárku na začátek (přidal by se i index a systém se rozbil)
- $groups[$group_index]['players'] .= $players[$i];
- }
- // Pokud již skupina má alespoň jednoho hráče
- else {
- // Přidat čárku na začátek, aby se dalo vytvořit pole
- $groups[$group_index]['players'] .= ',' . $players[$i];
- }
- }
- // Skupina je již naplněna -> Hráč nebyl použit
- else {
- // 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)
- $i--;
- }
- // Pokud je ještě další skupina v řadě
- if($group_index < $group_sum - 1) {
- // Přičíst hodnotu do indexu
- $group_index++;
- }
- // Pokud se jedná o poslední skupinu
- else {
- // Začít od začátku
- $group_index = 0;
- }
- }
- // Výpis výsledku
- print_r($groups);
Add Comment
Please, Sign In to add comment