[PHP] formula e ciclo

Discussione in 'PHP' iniziata da Baronpaolo, 1 Agosto 2019.

  1. Baronpaolo

    Baronpaolo Nuovo Utente

    Registrato:
    5 Ottobre 2008
    Messaggi:
    4
    Mi Piace Ricevuti:
    0
    Punteggio:
    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.
     
  2. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    926
    Mi Piace Ricevuti:
    53
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    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!
     
    A Baronpaolo piace questo elemento.
  3. Baronpaolo

    Baronpaolo Nuovo Utente

    Registrato:
    5 Ottobre 2008
    Messaggi:
    4
    Mi Piace Ricevuti:
    0
    Punteggio:
    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.
     
  4. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    926
    Mi Piace Ricevuti:
    53
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    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
     
  5. Baronpaolo

    Baronpaolo Nuovo Utente

    Registrato:
    5 Ottobre 2008
    Messaggi:
    4
    Mi Piace Ricevuti:
    0
    Punteggio:
    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 ?
     
  6. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    926
    Mi Piace Ricevuti:
    53
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    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!
     
Sto caricando...

Condividi questa Pagina