Incrémenté une variable quand la boucle réussi.

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Incrémenté une variable quand la boucle réussi.

par Dosix » 16 avr. 2009, 11:59

Mon but est d'obtenir celà :

44.0,357.0,1.8
44.0,357.1,1.74
44.0,357.3,1.62
[.....]
44.0,2.0,3

44.1,357.0,1.8
44.1,357.1,1.74
44.1,357.3,1.62
[.....]
44.1,2.0,3

Jusqu'a

46.0,357.0,1.8
46.0,357.1,1.74
46.0,357.3,1.62
[.....]
46.0,2.0,3


EDIT RESOLU :

Je viens de résoudre mon problème au lieu d'utilisé while() j'ai utilisé une boucle for() et sa marche parfaitement bien.
D'ailleurs si quelqu'un serai comment c'est possible j'aimerai bien une petite explication.

Merci en tout cas pour les réponses :wink:

par yaug » 16 avr. 2009, 11:57

hum.
Mais que veux tu obtenir au final?

En te servant du résultat actuel, peux tu le modifier pour me montrer ce que tu voudrais toi obtenir au final ?

Merci.

par Dosix » 16 avr. 2009, 11:55

J'obtiens ce que je t'ai mis dans mon précédent message.
$fin_lon = 3620;
$fin_lat = 460;

$varlon=3569;
$varlat=439;

$lon1=$varlon+1;
$lat1=$varlat+1;

#Commencement de la boucle
while($lat1 <= $fin_lat)
{

while($lon1 <= $fin_lon)
{

if($lon1 >= 3600)
{
$lon2 = ($lon1-3600)/10;
}
else {
$lon2 = $lon1/10;
}
$lat2 = $lat1/10;

$lon = number_format($lon2,1,'.',' ');
$lat = number_format($lat2,1,'.',' ');

//Calcule des points autours
$var_lat = explode('.', $lat);
$var_lon = explode('.', $lon);

if($var_lon[1] <= 5)
{
$data_long = $var_lon[0];
}
elseif($var_lon[1] > 5)
{
$data_long = $var_lon[0] + 0.5;
}

if($var_lat[1] <= 5)
{
$data_lat = $var_lat[0];
}
elseif($var_lat[1] > 5)
{
$data_lat = $var_lat[0] + 0.5;
}

//et ici j'ai mes données $data que je ne met pas car beaucoup trop long.

$données = "$lat,$lon,$data\n";

$monfichier = fopen('test.txt','a+');
fwrite($monfichier, $données);

$lon1++;

}

$lat1++;

}

Et en résultat j'obtiens

http://www.meteo-gironde.net/test.txt[/php]

par yaug » 16 avr. 2009, 11:35

A première vue je dirais que cela devrait fonctionner.
Qu'est ce que tu obtiens au final ?

Au fait..
Pourquoi :
    $données = "$lat,$lon,$data\n"; 
Alors que tu utilise $lat1 et $lon1 dans le reste du code?
Ton problème ne viendrais t-il pas de là ?

par Dosix » 16 avr. 2009, 11:21

En fait j'y avais pensé mais sa marche pas, je viens de réessayé mais non :(

Mon but est d'obtenir celà :

440,3570,1.8
440,3571,1.74
440,3573,1.62
[.....]
440,2.0,3

441,3570,1.8
441,3571,1.74
441,3573,1.62
[.....]
441,3620,3

Jusqu'a

460,3620,6.2

Enfaite ce sont des coordonnées (latitude/longitude) après je divise et j'obtiens les bons résultats.

par yaug » 16 avr. 2009, 11:13

Hum... à première vue pourquoi ne pas faire une boucle imbriquée dans une autre boucle.
Je n'aurais personnellement pas procédé comme cela, mais en suivant ton exemple, voici ce que cela peut donner :
<?php

$fin_lon = 3620;
$fin_lat = 460;

$varlon=3569;
$varlat=439;

$lon1=$varlon+1;
$lat1=$varlat+1;

#Commencement de la boucle
while($lat1 <= $fin_lat)
{
	while($lon1 <= $fin_lon)
	{

	$données = "$lat,$lon,$data\n";

	$monfichier = fopen('test.txt','a+');
	fwrite($monfichier, $données);

	$lon1++;

	} 
	$lat1++;
}
non ?

Incrémenté une variable quand la boucle réussi.

par Dosix » 16 avr. 2009, 11:07

Bonjour,

Je vous montre le script après je vous explique plus bas :
$fin_lon = 3620;
$fin_lat = 460;

$varlon=3569;
$varlat=439;

$lon1=$varlon+1;
$lat1=$varlat+1;

#Commencement de la boucle
while($lon1 <= $fin_lon)
{

$données = "$lat,$lon,$data\n";

$monfichier = fopen('test.txt','a+');
fwrite($monfichier, $données);

$lon1++;

}
Donc ça c'est mon script actu et moi je cherche à incrémenté $lat1 +1 à chaque fois que $fin_lon est atteint c'est à dire 3620 et celà jusqu'a que $fin_lat soit égal à 460.

Donc je bloque un peu là, existe t-il une fonction qui fait celà ?

A bientôt