Foros del Web » Programando para Internet » PHP »

Cadenas en php

Estas en el tema de Cadenas en php en el foro de PHP en Foros del Web. Hola, he estado buscando la manera de hacer que una cadena ejemplo: $var = 1+2*9; me imprima 27, q seria el resultado; en vez d ...
  #1 (permalink)  
Antiguo 19/10/2006, 00:41
Avatar de minkweb  
Fecha de Ingreso: septiembre-2005
Mensajes: 443
Antigüedad: 18 años, 7 meses
Puntos: 14
Exclamación Cadenas en php

Hola, he estado buscando la manera de hacer que una cadena ejemplo:
$var = 1+2*9;
me imprima 27, q seria el resultado; en vez d eso cuando hago echo $var me imprime 1+2*9
Si saben de alguna manera para ordenarle a php que siendo una cadena de texto efectue las operaciones les agradecería mucho
  #2 (permalink)  
Antiguo 19/10/2006, 01:01
Avatar de kennyhp  
Fecha de Ingreso: julio-2006
Mensajes: 370
Antigüedad: 17 años, 9 meses
Puntos: 5
usa printf

usando echo no se hacerlo, pero puedes usar printf

Código:
<?php
   
   $var= 1+2*9;
   printf("El resultado es %d",$var);
?>
Veras que hace lo que quieres.
Con %d estas diciendo que te imprima la variable que viene detras de la coma, en este caso un entero (si quisieses una cadena usarias %s)

No lo he probado con php pero en teoria tambien puedes hacerlo directamente:

Código:
printf("El resultado es %d",1+2*9);
Y puedes encadenar varios resultados segidos:

Código:
$nombre= "Dani";
$var=2+2;
printf("Hola %s El resultado es %d ",$nombre,$var);
Mas info del printf:

http://es2.php.net/manual/es/function.printf.php

Saludos!
  #3 (permalink)  
Antiguo 19/10/2006, 01:20
Avatar de minkweb  
Fecha de Ingreso: septiembre-2005
Mensajes: 443
Antigüedad: 18 años, 7 meses
Puntos: 14
Exclamación

sabes que le he inentado pero no funciona, tendra q ver con que estoy pasando la variable por post?
Código PHP:
<?php
$num1 
$_POST['num1'];
printf("El resultado es %d",$num1);

?>
Obviamente, $num1 es un campo de texto, bueno x ejemplo $num1 = 2*8+8, cuando lo intento con printf me sale solo el primer numero de la cadena, osea cuando lee algun caracter diferente a un numero se corta el resultado, realmente no se q esta fallando
  #4 (permalink)  
Antiguo 19/10/2006, 01:53
Avatar de kennyhp  
Fecha de Ingreso: julio-2006
Mensajes: 370
Antigüedad: 17 años, 9 meses
Puntos: 5
Cita:
Obviamente, $num1 es un campo de texto,
Si es un campo de texto no puedes hacer operaciones con el.

¿por que no haces las operaciones en la página de origen y envias por POST solo el resultado?
  #5 (permalink)  
Antiguo 19/10/2006, 02:05
Avatar de minkweb  
Fecha de Ingreso: septiembre-2005
Mensajes: 443
Antigüedad: 18 años, 7 meses
Puntos: 14
Osea que es imposible hacerlo si se pasa la variable x un input type="text"? no creo q sea imposible
  #6 (permalink)  
Antiguo 19/10/2006, 05:40
Avatar de kennyhp  
Fecha de Ingreso: julio-2006
Mensajes: 370
Antigüedad: 17 años, 9 meses
Puntos: 5
El problema esta en el tipo de variable que mandas.
Igual me equivoco, pero PHP interpreta que tipo de variable estas usando, es decir que tu no tienes que declarar el tipo.
por ejemplo, hay lenguajes en el que si quieres una variable de tipo entero has de decirselo: int numero, en PHP no es necesario y declalas: $numero
Si tu pasas una variable que es $numero= 2 PHP detecta que es un entero y la manda como tal, pero si le mandas $numero=2+2*9 no la detecta como entero asi que la asigna como texto.
Con el texto no puedes hacer operaciones.
asi que o mandas los numero por separado o haces la operación en el origen y mandas el resultado.
  #7 (permalink)  
Antiguo 19/10/2006, 10:10
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 5 meses
Puntos: 4
Cita:
Iniciado por minkweb Ver Mensaje
Osea que es imposible hacerlo si se pasa la variable x un input type="text"? no creo q sea imposible
No es imposible, sólo que tendrías que hacer un código para que te haga las operaciones con la variable que mandaste. Mira yo hice hace un tiempo algo parecido a lo que tu planteas:

http://www.forosdelweb.com/f18/diferencias-numero-operaciones-bd-431771/

Pero es muy tedioso hacer esto además de que sólo te hace una operació, deberá ser mas largo el código para que se puedan hacer más operaciones, claro que se puede mejorar ese código pero lo más comodo sería lo que ya te comento kennyhp:

Cita:
Iniciado por kennyhp Ver Mensaje
o mandas los numero por separado o haces la operación en el origen y mandas el resultado
Bueno pues ahy tienes las opciones toma la que quieras o se te haga más cómoda pero yo optaría por la última. Suerte
  #8 (permalink)  
Antiguo 19/10/2006, 10:41
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
OJO: ES MUY INSEGURO OJO

Puedes usar eval:
Código PHP:
$op "2+2*9;"// ojo con el ; dentro del string
eval( '$resultado = ' $op ); 
  #9 (permalink)  
Antiguo 23/10/2006, 03:56
Avatar de oskarL  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 499
Antigüedad: 18 años, 11 meses
Puntos: 2
porque es inseguro usar eval?
__________________
Solo hay 10 clases de personas, las que saben binario y las que no.
  #10 (permalink)  
Antiguo 23/10/2006, 05:38
 
Fecha de Ingreso: octubre-2006
Ubicación: Málaga
Mensajes: 33
Antigüedad: 17 años, 6 meses
Puntos: 0
si usas eval puedes ejecutar una sentencia php, y al estar llegando el valor a usar desde un formulario puedes meter en ese campo el código de un script que haga casi cualquier cosa.
Da susto sólo pensarlo....
  #11 (permalink)  
Antiguo 24/10/2006, 14:35
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 5 meses
Puntos: 4
minkweb, ya mejore el código que te había mencionado anteriormente, echale un vistazo, probablemente te pueda servir:

http://www.forosdelweb.com/f18/no-como-armar-este-while-436764/

Suerte
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 11:35.