толчок массива — 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;
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector