[PHP] formula e ciclo

Baronpaolo

Nuovo Utente
5 Ott 2008
4
0
1
Buon giorno, ho un problema con una formula.

{$AF = ($Fst3+$Fst); //tipo di flusso
$TPP1= ((((2*(sqrt(2*($AF*((($Fst2-
$N1)-$T1A)-$AF)))))*$T1Q))); // equazione
$TP1= ($TPP1*100)/$T1L;} // conversione in %
if ($TP1 >= 100)

Questa formula di idrodinamica mi converte un 'altezza che inserisco io $N1 in una % $STP1

Da quanto ho capito e letto dovrei usare un ciclo perchè mi restituisca il valore desiderato e cioè, vorrei che se nella mia formula il risultato fosse per esempio 60% vorrei che la formula si ripeta finchè non mi dia $STP1 al 100% e quindi che mi dia il valore di $N1 .

Grazie in anticipo per l'aiuto.
 

macus_adi

Utente Attivo
5 Dic 2017
1.128
64
48
IT/SW
Prova con una ricorsione in questo modo:
PHP:
function testR($N1=3){
   $Fst3=3;
   $Fst=4;
   $Fst2=15;
   $T1A=3;
   $T1Q=3;
   $T1L=4;
   $AF = ($Fst3+$Fst);
   $TPP1= (2*(sqrt(2*($AF*((($Fst2-$N1)-$T1A)-$AF)))))*$T1Q;
 
   if($TPP1<60){
      echo 'Valore N1='.$N1.' prc='.$TPP1."\r\n";
      return $this->testR($N1-1);
   }
else{
   echo $N1.' valore azzeccato!';
}
}
I numeri sono puramente illustrativi!
 
  • Like
Reactions: Baronpaolo

Baronpaolo

Nuovo Utente
5 Ott 2008
4
0
1
Ieri sera ho fatto delle prove con function e return. Ma non funziona, nel senso :
Con un metodo mi diceva che:
Fatal error: Using $this when not in object context
Con altro metodo solo con return testR () ; if e else non mi riportavano a function.
Non ho capito poi come incremento il valore di $N1 di 1 ogni volta che esegue l'equazione viene ripetuta con function e return.

Grazie per l'aiuto.
 

macus_adi

Utente Attivo
5 Dic 2017
1.128
64
48
IT/SW
if($TPP1<60){
echo
'Valore N1='.$N1.' prc='.$TPP1."\r\n";
return
$this->testR($N1-1);
}
else{
echo
$N1.' valore azzeccato!';
}
Notazione OOP, mi sono dimenticato di cancellarti il "$this"...
Modifica
PHP:
return $this->testR($N1-1);
con
PHP:
return testR($N1-1);
La funzione è ricorsiva ed incrementa e/o decrementa il valore $N1
 

Baronpaolo

Nuovo Utente
5 Ott 2008
4
0
1
Forse ho capito perchè a me non da nessun risultato, nel tuo primo esempio, a ogni variabile hai dato un valore numerico. Io quei valori non li ho inseriti perchè sono valori presi da equazioni precedenti. E' possibile che le variabili dentro una Function non siano globali?
La sintesi del mio problema si risolve in: esegui e ripeti la funzione finchè il valore di $TP1 non raggiunge o supera il 100%

Ho provato a seguire i tuoi suggerimenti e ho impostato il codice come segue, ma non mi da nessun valore:

PHP:
function testR($Equi){
$AF = ($Fst3+$Fst); //tipo di flusso
$TPP1= ((((2*(sqrt(2*($AF*((($Fst2-$Equi)-$T1A)-$AF)))))*$T1Q))); // equazione
$TP1= ($TPP1*100)/$T1L; // conversione in %
if ($TP1 < 100){ // la % è inferiore a 100
echo "Inclianzione " .$Equi. " prc=" .$TP1."\r\n"; // visualizza Equi e %
return testR($Equi+1); // ritorna a functon e aggiungi +1 a Equi
}
else
echo $Equi."valore azzeccato!";
}}
e se mi "butto" su un GOTO ?
 

macus_adi

Utente Attivo
5 Dic 2017
1.128
64
48
IT/SW
Stai provando a leggere il contenuto di variabili non inizializzate dentro la funzione....

Le var, tipo "AF,Fst3 etc..." dovresti passarle alla funzione....
Ossia potresti passare un tipo di array associativo nella funzione....
PHP:
$var_da_passare_alla_funzione=["Equi"=>3,"AF"=>'valore af'..... etc...];
function testR($data){
//$AF=($Fst3+Fst) -> diventa
$data['AF']=$data['Fst3']+$data['Fst'].
etc...

}
Prova così o in alternativa passa tutte le variabili alla funzione!