problema ciclo + condizione if

  • Creatore Discussione Creatore Discussione turillo
  • Data di inizio Data di inizio

turillo

Utente Attivo
23 Apr 2012
47
0
0
salve amici, vi descrivo subito quale stranezza mi assilla.
ho un array che contiene dei valori numerici che confronto con un valore iniziale ad ogni iterazione del ciclo, se il valore dell'elemento corrente è superiore allora ne prendo uno a caso sempre dallo stesso array che però sia minore del valore iniziale e glielo sostituisco. il problema è che spesso non entra nell'if quando faccio il confronto con l'elemento iniziale.

ecco il codice
PHP:
for($f=1;$f<=$N;$f++) {
				
				if($newpop[$f]->fit>=$init_worst_fit) { // init_worst_fit è il valore iniziale 
				echo "entrata";
					while($cond1!=1) {
						
						$in=array_rand($support,1);
						if($newpop[$in]->fit<$init_worst_fit) {
						
							$newpop[$f]=$newpop[$in];
							$cond1=1;
                              echo "cambiato";
							
						}
						
					}
				
				}
			}

qui invece ecco l'output dell'esempio

Codice:
352169.83981625 --> 
346575.36416333 --> 
334424.41142521 --> 
333980.79978094 --> 
347455.55627512 --> 
329235.184671 --> 
344214.14771903 --> 
334424.41142521 --> 
347258.837014 --> 
358972.4508821 --> entrata cambiato
331137.5606518 --> 
347719.44535414 --> 
320607.87086469 --> 
357797.45347006 --> entrata 
334424.41142521 --> 
335962.05633591 --> 
332652.91897526 --> 
347323.05322759 --> 
347258.837014 --> 
332692.38564749 --> 
333980.79978094 --> 
323466.10314394 --> 
324734.99146442 --> 
337893.50889831 -->

il valore iniziale in questo esempio è 357614.48907738

il problema è nel secondo if, perchè nel primo ci entra però poi non capisco perchè non entra nel secondo if anche perchè il ciclo while per concludersi deve per forza entrare nel secondo if..aspetto vostri commenti
 
ho fatto delle prove e credo di aver risolto il misfatto:

praticamente l'inizializzazione della variabile $cond1=0 la dovevo spostare subito prima del ciclo while, all'interno del secondo if.
 

Discussioni simili