Pregunta:
Fecha: 29-08-2018 10:12:27
(En Portugués)
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, Votos: 1 - Respuestas: 3 - Vistas: 7 Compartir en: Google Facebook Twitter LinkedIn Link
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, 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 -
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
