Foros del Web » Programando para Internet » PHP »

Ejecutar operación matemática

Estas en el tema de Ejecutar operación matemática en el foro de PHP en Foros del Web. Saludos. Tengo el siguiente problema: en una variable string escribo la formula como muestro en el codigo pero no me ejecuta la operación..... $Formula = ...
  #1 (permalink)  
Antiguo 08/03/2007, 10:28
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 19 años, 2 meses
Puntos: 2
Ejecutar operación matemática

Saludos.

Tengo el siguiente problema: en una variable string escribo la formula como muestro en el codigo pero no me ejecuta la operación.....

$Formula = "(V1*V2)/V3";
$a=10;$b=10;$c=5;
$Formula = str_replace("V1",$a,$Formula);
$Formula = str_replace("V2",$b,$Formula);
$Formula = str_replace("V3",$c,$Formula);

De lugar de arrojarme el resultado de la operacion me sale el string:
(10*10)/5
pero no el resultado que seria 20.

Que estoy haciendo mal???????

Agradezco la ayuda y sugerencias que me puedan brindar.
  #2 (permalink)  
Antiguo 08/03/2007, 10:35
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Re: Ejecutar operación matemática

Está usando mal la lógica. En primer lugar el str_replace() reemplaza un cadena de texto por otra, no hace la operación implícita. Ud. caso cree que el intérprete PHP entiende lo que está escrito así como ud lo entiende? Ese no es el modo de hacer las operaciones, lo que debe hacer es una función.

function formula($a, $b, $c) {
return ($a*$b)/$c;
}
  #3 (permalink)  
Antiguo 08/03/2007, 10:36
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
Re: Ejecutar operación matemática

Porque poner dentro de una fórmula dentro de un string? El problema esta en que al ser un "string" no realiza la operación.

Saludillos.
  #4 (permalink)  
Antiguo 08/03/2007, 10:57
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 19 años, 2 meses
Puntos: 2
Re: Ejecutar operación matemática

Saludos Mauled.

como pudiste leer la variable formula $Formula = "(V1*V2)/V3";
no siempre es la misma es de acuerdo a como se guarda en una tabla como puede ser: ((V1+V2)*V3)/V4

Entonces no me sirve el consejo que me diste

function formula($a, $b, $c) {
return ($a*$b)/$c;
}

porque no siempre son los mismos operadores

Agradezco su respuesta, pero que solución puedo hacer??????????
  #5 (permalink)  
Antiguo 08/03/2007, 11:09
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Re: Ejecutar operación matemática

Usa eval():
Código PHP:
$a=10$b 2$c 3;
$v "($a*$b)/$c";
eval(
"echo $v;"); 
Saludos
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #6 (permalink)  
Antiguo 08/03/2007, 13:28
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 19 años, 2 meses
Puntos: 2
Re: Ejecutar operación matemática

Saludos...

Creo que aun no me han entendido, es para un aplicativo de indicadores de gestion...

por cada indicador es una formula distinta, Ej:
1) (V1*V2)/V3
2) (V1+V2)/V3
3) ((V1+V2)*V3)/V4
y asi pueden haber x variables...

En el form coloco x cantidad de campos de texto para que digiten los valores de V1,V2,V3 y asi sucesivamente.....

El codigo que estoy manejando es el siguiente...

$Formula = "(V1*V2)/V3";
$a=10;$b=10;$c=5;
$Formula = str_replace("V1",$a,$Formula);
$Formula = str_replace("V2",$b,$Formula);
$Formula = str_replace("V3",$c,$Formula);
$res = eval($Formula);

pero me sale este error

Parse error: parse error, unexpected $end in C:\Archivos de programa\Apache Group\Apache2\htdocs\pruebas\expresiones.php(7) : eval()'d code on line 1


Que me aconsejan???????
  #7 (permalink)  
Antiguo 08/03/2007, 13:32
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Re: Ejecutar operación matemática

Y si, estas usando mal eval. Mirá mi ejemplo, funciona perfecto, o bien lee el manual
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #8 (permalink)  
Antiguo 08/03/2007, 13:45
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 19 años, 2 meses
Puntos: 2
Re: Ejecutar operación matemática

Saludos Nicolaspar

Me sale error y lo hice asi de acuerdo a como me explicaste:

$Formula = "(V1*V2)/V3";
$a=10;$b=10;$c=5;
$Formula = str_replace("V1",$a,$Formula);
$Formula = str_replace("V2",$b,$Formula);
$Formula = str_replace("V3",$c,$Formula);
$res2 = eval(echo $Formula);
o
eval(echo $Formula);

Parse error: parse error, unexpected T_ECHO in C:\Archivos de programa\Apache Group\Apache2\htdocs\pruebas\expresiones.php on line 7

que otra sugerencia??
  #9 (permalink)  
Antiguo 08/03/2007, 13:53
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
Re: Ejecutar operación matemática

Trataste poniendo el echo fuera de eval??


Código PHP:
echo eval($Formula); 
  #10 (permalink)  
Antiguo 08/03/2007, 14:10
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 19 años, 2 meses
Puntos: 2
Re: Ejecutar operación matemática

si claro y me sale el siguiente error:

Parse error: parse error, unexpected $end in C:\Archivos de programa\Apache Group\Apache2\htdocs\pruebas\expresiones.php(7) : eval()'d code on line 1
  #11 (permalink)  
Antiguo 08/03/2007, 14:24
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Re: Ejecutar operación matemática

Dio!, esta claro en el manual (no se enojen, pero a ponerle ganas gente!), sería:
Código PHP:
$Formula "(V1*V2)/V3";
$a=10;$b=10;$c=5;
$Formula str_replace("V1",$a,$Formula);
$Formula str_replace("V2",$b,$Formula);
$Formula str_replace("V3",$c,$Formula);
eval(
"\$res = $Formula;");
echo 
$res
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #12 (permalink)  
Antiguo 08/03/2007, 16:09
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 19 años, 2 meses
Puntos: 2
Re: Ejecutar operación matemática

Gracias nicolaspar

lo habia echo asi
eval("\$res = \$Formula;");

y me traia el string.....


no habia entendido bien el eval......

Muchas gracias por su tiempo
  #13 (permalink)  
Antiguo 08/03/2007, 17:07
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Re: Ejecutar operación matemática

Claro, la \ escapa, por eso $Formula no era evaluada. Suerte.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:17.