Problema ao usar dois for

01/03/2016

Estou com um problema ao usar dois for, exemplo, quando coloco o n_temporadas = 5 e o n_episódios = 3, ele deveria criar 30 linhas ""document.getElementById('div_ep$y$i').style.display=\"none\";" mais cria apenas 6 que são os referentes ao 5, é como se o primeiro for não percorresse, apenas começasse do $y = 5; alguém tem como me ajudar, fiquei a tarde toda tentando resolver ontem, mas nada até agora?

for($y = 1; $y < $n_temporadas+1; $y++){
    for($i = 1; $i < $n_episodios+1; $i++){
        if($audio == dublado){

$episodios_none_array[$i] = "document.getElementById('div_ep$y$i').style.display=\"none\";
                 document.getElementById('div_ep_op$y$i').style.display=\"none\";
                ";

$episodios_block_array[$i] = "case 'mostrar_ep$y$i':
                                  document.getElementById('div_ep$y$i').style.display=\"block\";
break
case 'mostrar_ep_op$y$i':
                                  document.getElementById('div_ep_op$y$i').style.display=\"block\"; 
break
";

$ep_dub = $_POST['iframe_ep'.$y.$i];    //valores recebido de formulários
$ep_dub_op = $_POST['iframe_ep_op'.$y.$i]; //valores recebido de formulários

$conteudo_episodios_array[$i] = "<button type=\"button\" onclick=\"mostrar_abas(this);\" id=\"mostrar_ep$y$i\" >Episodio $i</button> - <button type=\"button\" onclick=\"mostrar_abas(this);\" id=\"mostrar_ep_op$y$i\" >Opção 2</button><br>
                ";
$div_episodios_array[$i] = "<div id=\"div_ep$y$i\" style=\"display:none;\">$ep_dub</div>
<div id=\"div_ep_op$y$i\" style=\"display:none;\">$ep_dub_op</div>
               ";

}else if($audio == dub_leg){
//ainda nada
        }
    }
}

//transformar os array em string 

$episodios_none = implode(" ", $episodios_none_array);
$episodios_block = implode(" ", $episodios_block_array);
$conteudo_episodios = implode(" ", $conteudo_episodios_array);
$div_episodios = implode(" ", $div_episodios_array);

PHP

Diogo

Melhor resposta

01/03/2016

Pessoal esse usuário "Ramom" está só poluindo mesmo, procurem não dar importância para os posts dele, estou cancelando na medida do possível!

Vamos ver até quando vai essa "brincadeira" dele!

O PHP suporta sim loops FOR dentro FOR.

William (devwilliam)

Responder Citar

Outras Respostas

01/03/2016

Diogo

Acho que você está enganado, pois estou usando em outro lugar do código um for dentro do outro e está funcionando perfeitamente. Vou deixar abaixo o código, esse funcionou corretamente, e estou usando um for dentro do outro dentro de um if:

Testei com While para o n_temporadas e não deu certo, ainda são criados apenas 6. O certo seria ser criados 30 linhas, 15 "div_ep" e 15 "div_ep_op"(tipo isso: 11, 12, 13, 21, 22, 23, 31, 32, 33, 41, 42, 43, 51, 52, 53).

<?php 
   if($audio == dublado){?>
    <?php
	for($x = 1; $x < $n_temporadas+1; $x++){
	echo "$x";?>ªTemporada Dublado - <br>
	<?php
	for($i = 1; $i < $n_episodios+1; $i++){ 
	echo "$i";?>.ep:
	<input type="text" value="opção1" name="<?php echo htmlspecialchars('iframe_ep'.$x.$i);?>" autocomplete="off" /> - <input type="text" value="opção2" name="<?php echo htmlspecialchars('iframe_ep_op'.$x.$i);?>" autocomplete="off" /><br>
	<?php } 
	}?>
	<?php 
	}else if($audio == dub_leg){?>
	  <?php
	for($x = 1; $x < $n_temporadas+1; $x++){
	echo "$x";?>ªTemporada Dublado - <br>
	<?php
Responder Citar

01/03/2016

Marcio Araujo

Bom dia meu caro. Infelizmente PHP não suporta um for dentro de outro for. Recomendo usar um for dentro de um while. Abraço.


Nunca tinha lido algo assim, mas nunca foi mostrado em apostilas e em video aulas possiveis exemplos com dois for, nunca tinha reparado!
Responder Citar

01/03/2016

Diogo

[quote]Bom dia meu caro. Infelizmente PHP não suporta um for dentro de outro for. Recomendo usar um for dentro de um while. Abraço.


Nunca tinha lido algo assim, mas nunca foi mostrado em apostilas e em video aulas possiveis exemplos com dois for, nunca tinha reparado![/quote]

Acabei de mostrar um exemplo que funciona usando dois for, mas estou tendo aquele problema com o outro código.
Responder Citar

01/03/2016

Marcio Araujo

Funciona corretamente? Mas na documentação existe alguma especificação contra?
Responder Citar

01/03/2016

Diogo

Até agora não encontrei nada não, acho que não tem nada contra, pois isso seria uma limitação grande demais para o php. Acho que tem como, o problema está em outro lugar que não está funcionando. Talvez possa ser a maneira errada de colocar os índices, ainda não, é isso que quero saber kkk
Responder Citar

01/03/2016

Marcio Araujo

Deve ser um detalhe, tentar ver com calma aqui.
Responder Citar

01/03/2016

Diogo

Vou mandar o que recebo e o que deveria receber. Estou recebendo dessa parte do:

$episodios_none_array[$i] = "document.getElementById('div_ep$y$i').style.display=\"none\";
                                              document.getElementById('div_ep_op$y$i').style.display=\"none\";
                                              ";


Isso:

document.getElementById('div_ep51').style.display="none";
document.getElementById('div_ep_op51').style.display="none";
document.getElementById('div_ep52').style.display="none";
document.getElementById('div_ep_op52').style.display="none";
document.getElementById('div_ep53').style.display="none";
document.getElementById('div_ep_op53').style.display="none";


Mas o certo utilizando os dois for, sendo q o n_temporadas é 5 e o n_episodios é 3 seria:

document.getElementById('div_ep11').style.display="none";
document.getElementById('div_ep_op11').style.display="none";
document.getElementById('div_ep12').style.display="none";
document.getElementById('div_ep_op12').style.display="none";
document.getElementById('div_ep13').style.display="none";
document.getElementById('div_ep_op13').style.display="none";

document.getElementById('div_ep21').style.display="none";
document.getElementById('div_ep_op21').style.display="none";
document.getElementById('div_ep22').style.display="none";
document.getElementById('div_ep_op22').style.display="none";
document.getElementById('div_ep23').style.display="none";
document.getElementById('div_ep_op23').style.display="none";

document.getElementById('div_ep31').style.display="none";
document.getElementById('div_ep_op31').style.display="none";
document.getElementById('div_ep32').style.display="none";
document.getElementById('div_ep_op32').style.display="none";
document.getElementById('div_ep33').style.display="none";
document.getElementById('div_ep_op33').style.display="none";

document.getElementById('div_ep41').style.display="none";
document.getElementById('div_ep_op41').style.display="none";
document.getElementById('div_ep42').style.display="none";
document.getElementById('div_ep_op42').style.display="none";
document.getElementById('div_ep43').style.display="none";
document.getElementById('div_ep_op43').style.display="none";

document.getElementById('div_ep51').style.display="none";
document.getElementById('div_ep_op51').style.display="none";
document.getElementById('div_ep52').style.display="none";
document.getElementById('div_ep_op52').style.display="none";
document.getElementById('div_ep53').style.display="none";
document.getElementById('div_ep_op53').style.display="none";
Responder Citar

01/03/2016

Eduardo Pessoa

"Copiado" William.
Responder Citar

01/03/2016

Diogo

É só tirar o índice $i e deixar o php fazer isso por mim que deu certo aqui.
Responder Citar

01/03/2016

Marcio Araujo

Pessoal esse usuário "Ramom" está só poluindo mesmo, procurem não dar importância para os posts dele, estou cancelando na medida do possível! Vamos ver até quando vai essa "brincadeira" dele! O PHP suporta sim loops FOR dentro FOR.


Nesses casos o que pode ser feito?
Responder Citar