Nueva pregunta

Pregunta:

Fecha: 29-08-2018 10:12:27 (En Portugués)

Armazenando Equações e Fórmulas MySql[Resuelta]

Pessoal,
Supondo que armazenei uma fórmula no MySql que correspondem exatamente as variáveis em uma função PHP: "(a + b)/2.5

Na função tem a entrada pelo usuário:
a = 10
b = 15

Minha dúvida é como usar a equação armazenada , sendo que se der select ela retorna como String.

Isto é apenas uma exemplo, mas as fórmulas que estou usando são mais complexas.


Abraços,
Etiquetas: MySQL - PHP Votos: 1 - Respuestas: 3 - Vistas: 7 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 30-08-2018 19:09:21 Saludos, lo que buscas es algo complejo, no estoy seguro de como se haría, pues imagina la cantidad de formulas que podrías registrarse, voy a seguir investigando, pero para tu ejemplo se me ocurriria algo asi:

    //Formula
    $for = "(a+b)/2.5";
    //Valores
    $a = 10;
    $b = 15;
    //Posibilidades
    $var = ['(a+b)'=> $a+$b, '(a-b)'=> $a-$b, '(a*b)'=> $a*$b, '(a/b)'=> $a/$b,];
    //Buscamos posibilidad
    preg_match("/[({]+[\sa-zA-Z0-9\s]+[+-\/*]+[\sa-zA-Z0-9\s]+[})]/", $for, $sale);
    
    //Resultado 1 ($a x $b)
    $res = $var[$sale[0]];
    
    preg_match_all("/[^()a-zA-Z]/", $for, $sep);
    $calc = explode($sep[0][1],$for);
    
    function calc($y, $x, $v){
        switch ($x) {
            case '+':
                return $y + $v;
            break;
            
            case '-':
                return $y - $v;
            break;
            
            case '/':
                return $y / $v;
            break;
            
            case '*':
                return $y * $v;
            break;
        
        }
    }
    
    //Final
    echo round(calc($res, $sep[0][1], $calc[1]),2);
    
    


    voy a continuar haciendo pruebas a ver como se podría interpretar la formula desde una cadena de texto.
      Votos: 2 - Link respuesta
     
  • Fecha: 30-08-2018 19:23:15 Esta es mas corta y hace lo mismo, creo es lo que buscas, pero ya tendrias que guardar las formulas preparadas para su interpretacion y ver como le haces con los tipos de formulas mas complejas

    
    //Formula
    $for = "(%g+%e)/2.5";
    
    //Valores
    $a = 10;
    $b = 15;
    
    //Reemplazo los valores
    $x = sprintf($for, $a, $b);
    
    //Transformo la formula en variable
    eval("\$var = $x;");
    
    //Muestro el resultado
    echo $var;
    
    


    por ejemplo algo así:

    
    //Formula
    $for = "(%g+%e)/2.5*(%d)";
    
    //Valores
    $a = 10;
    $b = 15;
    $c = 10;
    
    //Reemplazo los valores
    $x = sprintf($for, $a, $b, $c);
    
    //Transformo la formula en variable
    eval("\$var = $x;");
    
    //Muestro el resultado
    echo $var;
    
    
      Votos: 2 - Link respuesta
     
  • Fecha: 22-12-2018 10:46:33 Perfeito   Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com