To precisando de uma ajuda aqui, pois já quebrei a cabeça de tudo q é jeito e já procurei em tudo q é lugar e não consegui solução. Seguinte:
Estou fazendo um sistema que gera uma tabela pra um campeonato de futebol. Pra quem conhece um pouco de futebol, a tabela do campeonato será em sistema de PONTOS CORRIDOS, ou seja, todos os times contra todos os times, sem repetições.
Seguinte, nem estou mexendo com turno e returno, somente 1 jogo entre todos os times. Segue o código da rotina abaixo e depois uma breve explicação do problema.
for ($i=1; $i<=$rodadas; $i++){ //quantidade de rodadas do campeonato
$time_rodada = array(); //recebe os IDs dos times em cada rodada para evitar que se repitam
for ($x=1; $x<=$jogos_por_rodada; $x++){ // jogos em cada rodada (exemplo = 10)
foreach ($partida as $key => &$time){
if (!in_array($time[0], $time_rodada) && !in_array($time[1], $time_rodada)){ //nenhum dos dois times esteve nessa rodada
$time_rodada[] = $time[0];
$time_rodada[] = $time[1];
$jogo[] = $partida[$key];
unset($partida[$key]); //Possível razão do problema
continue;
}
} // fim do foreach
} // fim do 2º for
} // fim do 1º for
Explicação e Problema:
Já possuo um array multidimensional ($partida) com os jogos em ordem sequencial. Exemplo: $partida[0] = array(0 => id_mandante, 1 => id_visitante) / $partida[1] = array(0 => id_mandante, 1 => id_visitante) e por aí vai.
Esse array está com dados dessa maneira: [0][iD1][iD2], [1][iD1][iD3], [2][iD1][iD4], ou seja, o time 1 contra todos, depois o time 2 contra todos (menos o 1 e ele próprio) e assim por diante, ou seja, não tem como montar a tabela nesse formato.
Essa rotina pretende pegar esse array e a partir dele, "montar" um outro array ($jogo) com a ordem certa dos jogos, pronto pra montar a tabela do campeonato.
Tudo vai bem até algum ponto onde os dados parece q se perdem, muito estranho.
No meu exemplo, a variável $rodadas = 19 (são 20 times) e $jogos_por_rodada = 10, ou seja, são 190 jogos no total (somente 1 turno). Acontece que a rotina DEVERIA passar pelo 1º IF 190 vezes, mas só passa 142. Percebi que sem a linha:
unset($partida[$key]);
A rotina repete as 190 vezes, então acho q meu problema está aí... acontece que já tentei de tudo, várias alternativas e não consigo e também não sei exatamente como ver QUANDO EXATAMENTE o código "se perde".
Pergunta
ttkhila
Salve, galera!
To precisando de uma ajuda aqui, pois já quebrei a cabeça de tudo q é jeito e já procurei em tudo q é lugar e não consegui solução. Seguinte:
Estou fazendo um sistema que gera uma tabela pra um campeonato de futebol. Pra quem conhece um pouco de futebol, a tabela do campeonato será em sistema de PONTOS CORRIDOS, ou seja, todos os times contra todos os times, sem repetições.
Seguinte, nem estou mexendo com turno e returno, somente 1 jogo entre todos os times. Segue o código da rotina abaixo e depois uma breve explicação do problema.
Explicação e Problema:
Já possuo um array multidimensional ($partida) com os jogos em ordem sequencial. Exemplo: $partida[0] = array(0 => id_mandante, 1 => id_visitante) / $partida[1] = array(0 => id_mandante, 1 => id_visitante) e por aí vai.
Esse array está com dados dessa maneira: [0][iD1][iD2], [1][iD1][iD3], [2][iD1][iD4], ou seja, o time 1 contra todos, depois o time 2 contra todos (menos o 1 e ele próprio) e assim por diante, ou seja, não tem como montar a tabela nesse formato.
Essa rotina pretende pegar esse array e a partir dele, "montar" um outro array ($jogo) com a ordem certa dos jogos, pronto pra montar a tabela do campeonato.
Tudo vai bem até algum ponto onde os dados parece q se perdem, muito estranho.
No meu exemplo, a variável $rodadas = 19 (são 20 times) e $jogos_por_rodada = 10, ou seja, são 190 jogos no total (somente 1 turno). Acontece que a rotina DEVERIA passar pelo 1º IF 190 vezes, mas só passa 142. Percebi que sem a linha:
unset($partida[$key]);
A rotina repete as 190 vezes, então acho q meu problema está aí... acontece que já tentei de tudo, várias alternativas e não consigo e também não sei exatamente como ver QUANDO EXATAMENTE o código "se perde".
Alguém pode me ajudar???
Muitíssimo obrigado, galera!!!!
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.