php array_push не работает

У меня есть сценарий, над которым я работаю, который автоматически создает пулы команд. Есть несколько клубов, и каждый клуб может иметь несколько команд. Несколько команд в одном бассейне из одного клуба не допускаются. Это где мой сценарий идет не так. Он проверяет, находится ли команда в том же клубе, что и другие команды в том же пуле (16 пулов,4 команды в пуле).

Он извлекает идентификатор команды из массива и сравнивает идентификаторы клубов в БД. Если они имеют одинаковый идентификатор клуба, идентификатор команды возвращается в массив и повторяется, пока не найдет команду в другом клубе.

Каким-то образом (иногда?) Не удается вернуть команду обратно в массив, и я не вижу, что я сделал неправильно. Если это произойдет один раз, я получу команду меньше, если это произойдет более одного раза, последние (или 2 последних) пула будут иметь пустое значение, что заставит цикл while работать вечно.

Это фрагмент кода, который сравнивает идентификаторы команды и клуба.

        //TeamA
        //set dummyteam if needed, else choose from array
        if($dummy != 0){
            $teamA = "73";
            --$dummy;
        }
        else{
            $teamA = array_pop($teams);
        }

        $teamB = array_pop($teams);
        //TeamB
        //is TeamB in different club then Team A?
        $ABteamisdifferent = 0;
        while($ABteamisdifferent == 0){
            if(GetClubID($teamA) == GetClubID($teamB)){
                    $teams[] = $teamB;
                    shuffle($teams);
                    $ABteamisdifferent = 0;
                    $teamB = array_pop($teams);

            }
            else{
                $ABteamisdifferent = 1;
            }
        }
        ...... 

Полная кодовая ссылка

Скрипт вывода

Код функции

Я потратил впустую 3 часа, пытаясь исправить это, но я, вероятно, пропускаю что-то глупое. Тем не менее, любая помощь очень ценится.

1 ответ

Решение

Вы добавляете команду обратно в $team переменные вместо $teams, Просто измените следующую строку:

$team[] = $teamB;

чтобы:

$teams[] = $teamB;
Другие вопросы по тегам