Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

Por qué no funciona este switch ?

Estas en el tema de Por qué no funciona este switch ? en el foro de WordPress en Foros del Web. Hola todos, Soy nuevo en php, esta es mi primera función y no hay forma de entender porqué no funciona. Llevo horas leyendo documentación y ...
  #1 (permalink)  
Antiguo 30/01/2013, 07:06
 
Fecha de Ingreso: noviembre-2007
Ubicación: Valencia, España
Mensajes: 8
Antigüedad: 17 años
Puntos: 0
Pregunta Por qué no funciona este switch ?

Hola todos,

Soy nuevo en php, esta es mi primera función y no hay forma de entender porqué no funciona.
Llevo horas leyendo documentación y viendo ejemplos.

¿alguien lo entiende?


Código:
1: function calcularBruto($cuantos) {

2: switch ($cuantos) {
  
3:    case 1 : 
4:    $x = 99.17 ;
5:    break ;
6:    case 2 :
7:    $x = 198.35 ;
8:    break ;
9:   }
10:}
Pues bien, consigo un error en la línea 7 (pues si, la 7, no la 4)

Parse error: syntax error, unexpected T_VARIABLE in functions.php on line 7

Llamo a la función desde un template con:

calcularBruto(1) ;


No entiendo.

Gracias de antemano.
  #2 (permalink)  
Antiguo 30/01/2013, 07:10
 
Fecha de Ingreso: agosto-2011
Ubicación: Santo Domingo
Mensajes: 487
Antigüedad: 13 años, 4 meses
Puntos: 31
Respuesta: Por qué no funciona este switch ?

No debes de utilizar Function..

Solo utiliza switch($cuantos){

}

y antes del switch debes obtener el valor de $cuantos,

Ej.
$cuantos = $_GET[cuantos];
__________________
El talento se educa en la KARMA y el carácter en la tempestad.
Gabriel De Los Santos
  #3 (permalink)  
Antiguo 30/01/2013, 07:32
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 5 meses
Puntos: 793
Respuesta: Por qué no funciona este switch ?

Cita:
Iniciado por gldelossantos Ver Mensaje
No debes de utilizar Function.
Sinceramente no tiene sentido lo que dices...

Esto me funciona perfectamente.

Código PHP:
Ver original
  1. function calcularBruto($cuantos) {
  2.     switch ($cuantos) {
  3.        
  4.         case 1:
  5.             $x = 99.17;
  6.             break;
  7.         case 2:
  8.             $x = 198.35;
  9.             break;
  10.     }
  11.     return $x;
  12. }
  13.  
  14. echo calcularBruto(1); //99.17
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #4 (permalink)  
Antiguo 30/01/2013, 12:30
 
Fecha de Ingreso: noviembre-2007
Ubicación: Valencia, España
Mensajes: 8
Antigüedad: 17 años
Puntos: 0
Respuesta: Por qué no funciona este switch ?

Andrés, me alegro que digas que no tiene sentido, porque me volvía loco.

Para mí tampoco tiene sentido, pero... no me funciona.


Está puesto dentro de una plantilla de Wordpress, y cuando abro la página que usa esta plantilla, me sale el dichoso error citado.

Con desesperanza, porque no me gusta evitar un problema por no comprender,o, he sustituido el switch por une succesión de if.

Hay doce (y no 2 como el ejemplo y como en el test simplificado que he realizado tal cual).

Pues.. if ($cuantos == 1) {$x = 99.17};
etc. hasta 12.

Pero me sabe a chapuza porque ¿de que sirve si no comprendo?

Como dices, no tiene ningún sentido.

Por cierto, ggldelossantos, gracias también, y claro que $cuantos estaba definido a partir de un botón submit en la página WP y $cuantos=$_REQUEST['cuantos'];

Ahora bien, me estoy dejando los ojos porque todo lo aprendo con lo tutoriale y foros de la web
  #5 (permalink)  
Antiguo 30/01/2013, 12:36
Avatar de PIRRUMAN  
Fecha de Ingreso: febrero-2006
Ubicación: Monterrey, Nuevo León
Mensajes: 633
Antigüedad: 18 años, 10 meses
Puntos: 53
Respuesta: Por qué no funciona este switch ?

te recomendaria primero hacer una prueba con el valor q recibes en tu funcion

Código PHP:
Ver original
  1. function calcularBruto($cuantos) {
  2. $cuantos="mivar->".$cuantos."<";//para saber si llega con espacios al inicio o final
  3.     return $cuantos;
  4. }

despues si es correcto lo recibido intenta encerrando en comillas simples los cases

Código PHP:
Ver original
  1. function calcularBruto($cuantos) {
  2.     switch ($cuantos) {
  3.        
  4.         case '1'://<<<<-comillas simples
  5.             $x = 99.17;
  6.             break;
  7.         case '2'://<<<<-comillas simples
  8.             $x = 198.35;
  9.             break;
  10.     }
  11.     return $x;
  12. }

parece extraño pero podria ser q no lo toma como numero en si , si no como string
__________________
“Prefiero ser un tonto momentaneo que un eterno ignorante”
“¡El éxito es resultado de los aciertos,los aciertos resultado de la experiencia y la experiencia resultado de los errores!”

Etiquetas: php, switch
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 07:09.