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;