Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Preciso repetir esse codigo por um numero indefinido de vezes, mas nao consigo colocar a variavel do contador junto com as variaveis dos comandos. Gostaria de alguma dica.
Não manjo muito de PHP mas ja fiz algo parecido em bash
======================================
<?php
$dados = "arquivo.txt";
$ativos = @file_get_contents($dados) or
die ("(F)Arquivo Inexistente. '$php_errormsg'");
#if ($ativos == false) die('Arquivo inexistente.');
$blocos = explode("\n\r", $ativos);
$linhas = [];
foreach($blocos as $key_bloco => $bloco) $linhas[$key_bloco] = $linhas_do_bloco;
foreach($linhas_do_bloco as $key_linha => $linha_do_bloco)
{
}
echo "\n";
}
$id1 = $linhas[0][9];
$id2 = $linhas[0][10];
$id3 = $linhas[0][11];
$id4 = $linhas[0][12];
$id5 = $linhas[0][13];
$cont = 1;
do {
$xml_data[$cont] = '
<xmlrequest>
<username>' . $username . '</username>
<usertoken>' . $token . '</usertoken>
<requesttype> request </requesttype>
<requestmethod> requestmethod </requestmethod>
<details>
<statid>' . $id[$cont] .'</statid>
<statstype>n</statstype>
</details>
</xmlrequest>
';
echo "$id[$cont]", '<br/>';
$ch[$cont] = curl_init();
curl_setopt($ch[$cont], CURLOPT_URL, $url);
curl_setopt($ch[$cont], CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch[$cont], CURLOPT_FAILONERROR, true);
curl_setopt($ch[$cont], CURLOPT_POST, true); curl_setopt($ch[$cont], CURLOPT_FOLLOWLOCATION, true);
}
curl_setopt($ch[$cont], CURLOPT_TIMEOUT, 10);
curl_setopt($ch[$cont], CURLOPT_POSTFIELDS, 'xml=' . $xml_data[$cont]);
$result[$cont] = curl_exec($ch[$cont]);
if($result[$cont] === false) {
echo "Error performing request";
} $xml_doc[$cont] = simplexml_load_string($result[$cont]);
if ($xml_doc[$cont]->status == 'SUCCESS') {
echo '<br/> result is <br/>';
var_dump($result[$cont]);
} else {
}
}
echo '<br/><br/> Result is ', $result[$cont], '<br/>';
// Faz o load do arquivo XML e retorna um objeto
$arquivo_xml[$cont] = simplexml_load_string($result[$cont]);
$cont++;
} while( $cont <= 20 );
?>Editei o post pra ficar mais compreensível. Estou testando dessa forma mas ainda sem sucesso.
Blz.. agora tenta explicar o que esta acontecendo de errado...
Que já como comentei vc está utilizando o id como uma variavel e não como uma array
exemplo:
$id1 = 10;
se vc escrever echo $id[1]; ele não vai imprimir 10, ele não vai imprimir nada, pq vc não criou nenhuma array $id com essa posição.
Esse 1, 2, 3, etc depois do $id fazem parte do conjunto de caracteres que formam o nome da variável
Então $id1 não é igual a $id[1]
Ali como vc está mandando o do { } while() percorres 20x vc terá que ter essas 20 posições no array..
$id[1] = $linhas[0][9];
$id[2] = $linhas[0][10];
$id[3] = $linhas[0][11];
$id[4] = $linhas[0][12];
$id[5] = $linhas[0][14];
...
$id[18] = $linhas[0][27];
$id[19] = $linhas[0][28];
$id[20] = $linhas[0][29];Isso funciona
<?php
$id[1] = 10;
$id[2] = 20;
$id[3] = 30;
$id[4] = 40;
$id[5] = 50;
$id[6] = 60;
$id[7] = 70;
$id[8] = 80;
$id[9] = 90;
$cont = 1;
do {
echo $id[$cont];
echo "<br>";
$cont ++;
} while ($cont <= 9);
?>
Isso não
<?php
$id1 = 10;
$id2 = 20;
$id3 = 30;
$id4 = 40;
$id5 = 50;
$id6 = 60;
$id7 = 70;
$id8 = 80;
$id9 = 90;
$cont = 1;
do {
echo $id[$cont];
echo "<br>";
$cont ++;
} while ($cont <= 9);
?>
Cara.. não dá para entender o que você quer.. parece que está faltando código ai.. você abre o do { mas não indica onde fecha ele...
O bom tb é colocar seu código dentro do da TAGs para CÓDIGO do editor para ficar mais fácil.. no botão <> aki de cima no editor do texto :D
Ali tb vi que você criou $id1, $id2... $id20 e está tentando pegar o valor deles com o $id[$cont] isso não funciona, pq esses números que você deu nos IDs é o nome da variável e você está tentando ler uma outra variável que é array...
O correto seria:
$id[1] = $linhas[0][9];
$id[2] = $linhas[0][10];
E por ai vai.. dai dessa forma você consegue ler com o $id[$cont]
Dá uma olhada no manual do PHP em array