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

Eléphanteau du PHP | 43 Messages

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
Météo Gironde : la météo en Gironde et en Aquitaine : Dordogne, Landes, Lot et Garonne et Pyrénées Atlantique. Préventions des phénomènes violents en Aquitaine.

www.meteo-gironde.net

Eléphant du PHP | 353 Messages

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 ?

Eléphanteau du PHP | 43 Messages

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.
Météo Gironde : la météo en Gironde et en Aquitaine : Dordogne, Landes, Lot et Garonne et Pyrénées Atlantique. Préventions des phénomènes violents en Aquitaine.

www.meteo-gironde.net

Eléphant du PHP | 353 Messages

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à ?

Eléphanteau du PHP | 43 Messages

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]
Modifié en dernier par Dosix le 16 avr. 2009, 11:57, modifié 1 fois.
Météo Gironde : la météo en Gironde et en Aquitaine : Dordogne, Landes, Lot et Garonne et Pyrénées Atlantique. Préventions des phénomènes violents en Aquitaine.

www.meteo-gironde.net

Eléphant du PHP | 353 Messages

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.

Eléphanteau du PHP | 43 Messages

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:
Météo Gironde : la météo en Gironde et en Aquitaine : Dordogne, Landes, Lot et Garonne et Pyrénées Atlantique. Préventions des phénomènes violents en Aquitaine.

www.meteo-gironde.net