Probleme boucle dans une boucle

Résolu
Bonjour à tous,

voila, j'ai un gros problème avec mon code PHP. J'ai dans un fichier des valeurs que j'ai récupéré, et c'est l'amplitude de quelque chose en fonction du temps, donc elle varie. Si l'on avait une image, la courbe serait sinusoidale, donc il y a plusieurs pics d'amplitude. J'ai réussi à faire un code qui permet de trouver les intervalles ou il pourrait y avoir des pics d'amplitude, mais maintenant, je dois trouver ces pics d'amplitude en question mais je n'y parviens pas. Voici la partie de code la plus importante pour vous situer dans le contexte, c'est à partir du while que ca pose problème, car j'ai mis une boucle dans une boucle, mais je crois pas que ca soit la bonne solution, merci d'avance :

<?php
$temporaire = array (); 
$l = count($donnees); 

for($cle=0; $cle < $l ;$cle++) // On va extraire du tableau donnees toutes les valeurs surperieur a la borne inferieur 468 et on va le mettre dans le tableau temporaire. 
{ 
if($donnees[$cle]["amplitude"] > $borne_inf) 
{ 
$temporaire[]=array('temps'=> $donnees[$cle]['temps'],'amplitude'=> $donnees[$cle]["amplitude"] ) ; 
} 
} 


echo '<pre>'; 
print_r($temporaire); // On affiche les données contenu dans le tableau. 
echo '</pre>'; 



$l = count($temporaire); // Count va compter tous les elements du tableau temporaire, et on la met dans la variable $l. 
$debut_intervalle=0; // On définit la variable 
$fin_intervalle=0; // On définit la variable 
$i = 0; // On définit la variable 
$maxi = array(); // On créer le tableau maxi qui va contenir les maximum d'amplitude. 
$indice=0; // On definit les variables. 


while($i<$l-1) // Tant qu'on est pas passer par tous les elements du tableau temporaire... 
{ 
if(($temporaire[$i+1]['temps']-$temporaire[$i]['temps']>0.3) || $i==$l-2) // Si l'on change d'intervalle. 
{ 
$fin_intervalle=$i; 
echo "pic d'amplitude trouvé entre $debut_intervalle et $fin_intervalle <br>"; $debut_intervalle=$i+1; // On cherche les intervalles de clé. 
$maximum=$temporaire[$debut_intervalle]['amplitude']; // Début de la monté pour l'amplitude. 
echo "Au début de l'intervalle, le maximum vaut $maximum <br>" ; 
$temps_max=$temporaire[$debut_intervalle]['temps']; // Début de la monté pour le temps. 
echo "Au début de l'intervalle , le temps vaut $temps_max <br>" ; 
for($k=$debut_intervalle ;$k < $l-1; $k++) // Tant que l'on est pas passer par tous les elements du tableau 
{ 
if($temporaire[$k]['amplitude'] > $maximum AND $temporaire[$k]['temps'] > $temps_max) // Si l'amplitude est supérieur à la monté de l'amplitude. 
{ 
$maximum=$temporaire[$k]['amplitude']; // L'amplitude est égale au début de la monté. 
$temps_max=$temporaire[$k]['temps']; // Le temps est égale au temps du début de la monté. 
echo "$temps_max 
"; 
echo"$maximum 
"; 
} 
$maxi[$indice]['temps']=$temps_max; 
$maxi[$indice]['amplitude']=$maximum; 
} 
$indice++; 
} 

$i++; 
} 


?> 

6 réponses

  1. Ouaahou ! Merci Beaucoup Alain_42, ca fonctionne, merci encore pour le temps que vous m'avez accordé :D Je marque le sujet comme résolu !
    0
    1. suite a test en réel avec tes données, voici rectifs de mes erreurs:

      foreach($temporaire as $cle=>$s_array){
      	
      	if($cle>0){
      		if($s_array['amplitude'] > $memo_valeur){
      			//on est dans une partie montante
      			//on memorise la valeur
      			$memo_valeur=$s_array['amplitude'];
      		}else{
      			//on est dans une partie descendante
      			//on memorise la valeur
      			$memo_valeur=$s_array['amplitude'];
      			//on memorise le pics  (cle précedente)
      			$array_pics[$c]['temps']=$temporaire[$cle-1]['temps']; //erreur la clef au lieu de cle
      			$array_pics[$c]['amplitude']=$temporaire[$cle-1]['amplitude']; //erreur la clef au lieu de cle
      			$c++; //increment compteur ici
      		}
      	}
      	
      }
      0
      1. Merci de votre réponse Alain.

        En utilisant votre code, ca m'affiche 272 valeurs vides pour le tableau array_pics. Il devrait normalement y avoir 6 pics, comme il y a 6 intervalles. Ca me repete aussi Undefined variable: clef et Undefined variable: -1
        1
        1. pas forcement besoin des données, mais avec foreach c'est beaucoup plus simple, essayes comme ça:

          <?php
          $temporaire = array();
          
          foreach($donnees as $cle=>$value){
          	if($value["amplitude"] > $borne_inf)
          	{
          		$temporaire[]=array('temps'=> $value['temps'],'amplitude'=>$value["amplitude"] ) ;
          	}
          
          }
          echo 'Donnees supérieurs au mini:<br /><pre>';
          print_r($temporaire); // On affiche les données contenu dans le tableau.
          echo '</pre>';
          
          $memo_valeur=0;
          $array_pics=array();
          $c=0;
          foreach($temporaire as $cle=>$s_array){
          	
          	if($cle>0){
          		if($s_array['amplitude'] > $memo_valeur){
          			//on est dans une partie montante
          			//on memorise la valeur
          			$memo_valeur=$s_array['amplitude'];
          		}else{
          			//on est dans une partie descendante
          			//on memorise la valeur
          			$memo_valeur=$s_array['amplitude'];
          			//on memorise le pics  (clef précedente)
          			$array_pics[$c]['temps']=$temporaire[$clef-1]['temps'];
          			$array_pics[$c]['amplitude']=$temporaire[$clef-1]['amplitude'];
          		}
          	}
          	$c++;
          }
          
          echo 'Array des pics<br /><pre>';
          print_r($array_pics); // On affiche les données contenu dans le tableau.
          echo '</pre>';
          
          
          ?>
          1
          1. Oui biensur, je vous le met directement ici. Successivement, on a le temps, puis le tiret, et l'amplitude, et ainsi de suite.

            15.01-466
            15.02-474
            15.03-468
            15.04-478
            15.05-469
            15.06-480
            15.07-474
            15.08-485
            15.09-484
            15.1-493
            15.11-485
            15.12-497
            15.13-489
            15.14-496
            15.15-494
            15.16-497
            15.17-501
            15.18-503
            15.19-505
            15.2-507
            15.21-506
            15.22-500
            15.23-508
            15.24-500
            15.25-510
            15.26-502
            15.27-508
            15.28-503
            15.29-512
            15.3-501
            15.31-515
            15.32-509
            15.33-516
            15.34-510
            15.35-516
            15.36-508
            15.37-518
            15.38-516
            15.39-520
            15.4-510
            15.41-514
            15.42-507
            15.43-514
            15.44-505
            15.45-500
            15.46-491
            15.47-479
            15.48-463
            15.49-454
            15.5-437
            15.51-67.54
            15.52-431
            15.53-424
            15.54-413
            15.55-415
            15.56-408
            15.57-409
            15.58-401
            15.59-407
            15.6-404
            15.61-411
            15.62-402
            15.63-416
            15.64-408
            15.65-422
            15.66-419
            15.67-425
            15.68-431
            15.69-436
            15.7-438
            15.71-448
            15.72-443
            15.73-453
            15.74-447
            15.75-451
            15.76-446
            15.77-450
            15.78-451
            15.79-448
            15.8-455
            15.81-451
            15.82-456
            15.83-458
            15.84-463
            15.85-460
            15.86-471
            15.87-468
            15.88-476
            15.89-468
            15.9-483
            15.91-477
            15.92-489
            15.93-483
            15.94-488
            15.95-481
            15.96-488
            15.97-483
            15.98-495
            15.99-490
            16.0-491
            16.01-492
            16.02-489
            16.03-492
            16.04-493
            16.05-491
            16.06-497
            16.07-497
            16.08-495
            16.09-491
            16.1-495
            16.11-501
            16.12-495
            16.13-501
            16.14-498
            16.15-501
            16.16-497
            16.17-507
            16.18-503
            16.19-510
            16.2-501
            16.21-511
            16.22-501
            16.23-509
            16.24-500
            16.25-507
            16.26-500
            16.27-505
            16.28-491
            16.29-486
            16.3-467
            16.31-463
            16.32-446
            16.33-71.71
            16.34-434
            16.35-419
            16.36-411
            16.37-405
            16.38-395
            16.39-392
            16.4-393
            16.41-393
            16.42-387
            16.43-390
            16.44-389
            16.45-400
            16.46-397
            16.47-401
            16.48-400
            16.49-404
            16.5-408
            16.51-415
            16.52-421
            16.53-430
            16.54-431
            16.55-433
            16.56-433
            16.57-444
            16.58-436
            16.59-443
            16.6-442
            16.61-445
            16.62-441
            16.63-441
            16.64-439
            16.65-445
            16.66-451
            16.67-448
            16.68-454
            16.69-450
            16.7-453
            16.71-457
            16.72-467
            16.73-466
            16.74-474
            16.75-470
            16.76-478
            16.77-474
            16.78-477
            16.79-481
            16.8-489
            16.81-483
            16.82-489
            16.83-483
            16.84-494
            16.85-488
            16.86-495
            16.87-487
            16.88-492
            16.89-489
            16.9-500
            16.91-490
            16.92-499
            16.93-494
            16.94-496
            16.95-495
            16.96-499
            16.97-498
            16.98-500
            16.99-501
            17.0-501
            17.01-503
            17.02-500
            17.03-505
            17.04-497
            17.05-503
            17.06-502
            17.07-510
            17.08-503
            17.09-513
            17.1-499
            17.11-506
            17.12-504
            17.13-508
            17.14-501
            17.15-501
            17.16-485
            17.17-475
            17.18-459
            17.19-444
            17.2-67.54
            17.21-422
            17.22-418
            17.23-402
            17.24-398
            17.25-388
            17.26-381
            17.27-375
            17.28-371
            17.29-373
            17.3-369
            17.31-369
            17.32-370
            17.33-376
            17.34-373
            17.35-372
            17.36-373
            17.37-382
            17.38-383
            17.39-394
            17.4-396
            17.41-402
            17.42-407
            17.43-416
            17.44-416
            17.45-425
            17.46-421
            17.47-427
            17.48-419
            17.49-429
            17.5-429
            17.51-431
            17.52-428
            17.53-435
            17.54-434
            17.55-440
            17.56-445
            17.57-448
            17.58-450
            17.59-455
            17.6-458
            17.61-461
            17.62-464
            17.63-462
            17.64-474
            17.65-468
            17.66-479
            17.67-471
            17.68-483
            17.69-477
            17.7-482
            17.71-483
            17.72-489
            17.73-480
            17.74-493
            17.75-480
            17.76-492
            17.77-483
            17.78-491
            17.79-493
            17.8-495
            17.81-488
            17.82-495
            17.83-492
            17.84-495
            17.85-502
            17.86-499
            17.87-499
            17.88-502
            17.89-497
            17.9-498
            17.91-503
            17.92-503
            17.93-509
            17.94-506
            17.95-510
            17.96-501
            17.97-505
            17.98-498
            17.99-505
            18.0-500
            18.01-508
            18.02-505
            18.03-509
            18.04-499
            18.05-506
            18.06-502
            18.07-503
            18.08-495
            18.09-491
            18.1-472
            18.11-454
            18.12-443
            18.13-63.14
            18.14-423
            18.15-411
            18.16-407
            18.17-393
            18.18-389
            18.19-383
            18.2-373
            18.21-371
            18.22-372
            18.23-371
            18.24-367
            18.25-374
            18.26-370
            18.27-376
            18.28-366
            18.29-376
            18.3-371
            18.31-382
            18.32-382
            18.33-399
            18.34-401
            18.35-413
            18.36-413
            18.37-420
            18.38-412
            18.39-418
            18.4-417
            18.41-424
            18.42-426
            18.43-435
            18.44-431
            18.45-438
            18.46-439
            18.47-437
            18.48-445
            18.49-443
            18.5-452
            18.51-448
            18.52-460
            18.53-452
            18.54-460
            18.55-458
            18.56-467
            18.57-464
            18.58-472
            18.59-470
            18.6-481
            18.61-477
            18.62-484
            18.63-481
            18.64-491
            18.65-483
            18.66-494
            18.67-489
            18.68-495
            18.69-489
            18.7-494
            18.71-494
            18.72-492
            18.73-493
            18.74-499
            18.75-492
            18.76-500
            18.77-497
            18.78-495
            18.79-499
            18.8-502
            18.81-502
            18.82-496
            18.83-499
            18.84-502
            18.85-508
            18.86-504
            18.87-506
            18.88-500
            18.89-508
            18.9-502
            18.91-509
            18.92-511
            18.93-516
            18.94-509
            18.95-518
            18.96-512
            18.97-512
            18.98-515
            18.99-515
            19.0-513
            19.01-516
            19.02-504
            19.03-496
            19.04-490
            19.05-479
            19.06-464
            19.07-450
            19.08-436
            19.09-61.15
            19.1-423
            19.11-412
            19.12-407
            19.13-402
            19.14-396
            19.15-396
            19.16-396
            19.17-401
            19.18-390
            19.19-395
            19.2-389
            19.21-406
            19.22-399
            19.23-412
            19.24-413
            19.25-418
            19.26-414
            19.27-425
            19.28-421
            19.29-435
            19.3-436
            19.31-443
            19.32-443
            19.33-446
            19.34-444
            19.35-446
            19.36-446
            19.37-443
            19.38-444
            19.39-448
            19.4-446
            19.41-447
            19.42-448
            19.43-449
            19.44-461
            19.45-456
            19.46-464
            19.47-459
            19.48-465
            19.49-457
            19.5-471
            19.51-470
            19.52-478
            19.53-474
            19.54-480
            19.55-475
            19.56-475
            19.57-473
            19.58-483
            19.59-483
            19.6-482
            19.61-479
            19.62-484
            19.63-485
            19.64-489
            19.65-485
            19.66-486
            19.67-490
            19.68-486
            19.69-493
            19.7-489
            19.71-490
            19.72-492
            19.73-497
            19.74-491
            19.75-495
            19.76-495
            19.77-496
            19.78-490
            19.79-501
            19.8-496
            19.81-502
            19.82-493
            19.83-497
            19.84-493
            19.85-498
            19.86-495
            19.87-501
            19.88-494
            19.89-498
            19.9-495
            19.91-504
            19.92-496
            19.93-505
            19.94-499
            19.95-505
            19.96-497
            19.97-486
            19.98-473
            19.99-458
            20.0-450
            0
            1. Si tu pouvais nous donner ta source de données ça serait plus utile que ton code.
              0