Ir para conteúdo
Fórum Script Brasil
  • 0

Problema em foreach com array


ttkhila

Pergunta

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.

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".

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

Até agora não há respostas para essa pergunta

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...