Foros del Web » Programando para Internet » PHP »

¿Se puede hacer esto con if (? :) anidados?

Estas en el tema de ¿Se puede hacer esto con if (? :) anidados? en el foro de PHP en Foros del Web. ¿Esto se puede hacer? Código PHP: $var  =  $_POST [ 'op' ]== 1  ?  'op1'  :  $_POST [ 'op' ]== 2  ?  'op2'  :  $_POST ...
  #1 (permalink)  
Antiguo 18/09/2009, 16:38
Avatar de danico90  
Fecha de Ingreso: febrero-2009
Ubicación: San José, Costa Rica
Mensajes: 148
Antigüedad: 15 años, 2 meses
Puntos: 13
Pregunta ¿Se puede hacer esto con if (? :) anidados?

¿Esto se puede hacer?
Código PHP:
$var $_POST['op']=='op1' $_POST['op']=='op2' $_POST['op']=='op3' 'op4'
  #2 (permalink)  
Antiguo 18/09/2009, 16:45
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: ¿Se puede hacer esto con if (? :) anidados?

Eso es correcto, se puede hacer. Aunque dificulta un poco el leerlos pero se puede.

Código PHP:
Ver original
  1. $var = $_POST['op']==1
  2.     ? 'op1'
  3.     : $_POST['op']==2
  4.         ? 'op2'
  5.         : $_POST['op']==3
  6.             ? 'op3'
  7.             : 'op4';
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 18/09/2009, 17:56
Avatar de pato12  
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 16 años, 7 meses
Puntos: 101
Respuesta: ¿Se puede hacer esto con if (? :) anidados?

Se puede haci, pero tienes que poner ( y )
Código php:
Ver original
  1. $var = $_POST['op']==1 ? 'op1' : ($_POST['op']==2 ? 'op2' : ($_POST['op']==3 ? 'op3' : 'op4'));
__________________
Half Music - www.halfmusic.com
  #4 (permalink)  
Antiguo 18/09/2009, 18:16
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: ¿Se puede hacer esto con if (? :) anidados?

No diria "tienes" porque lo puede hacer sin necesidad de los parentesis.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 18/09/2009, 18:25
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: ¿Se puede hacer esto con if (? :) anidados?

Si $var siempre va a ser op + el valor de $_POST['op'], lo mas facil y legible seria:

Código php:
Ver original
  1. $op = intval($_POST['op']);
  2. // Validas
  3. if($op < 1 || $op > 4)
  4.     die('Aqui el mensaje de error.');
  5.  
  6. $var = "op$op";
  7. // Es lo mismo que:
  8. $var = 'op' . $op;

Edito: Ciertamente es posible sin los parentesis, pero la asignacion ternaria no es tan facil de leer y es mejor colocar todas las condiciones entre parentesis, solo por respetar la sintaxis de condiciones y facilitar la lectura.

Edito nuevamente: Nunca he probado con asignaciones ternarias anidadas, suena logico lo que dice pato12 de agrupar entre parentesis el resto de asignaciones.
__________________
- León, Guanajuato
- GV-Foto

Última edición por Triby; 18/09/2009 a las 18:30
  #6 (permalink)  
Antiguo 18/09/2009, 18:32
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: ¿Se puede hacer esto con if (? :) anidados?

Es cierto, se me olvido colocar lo de facil lectura, con lo de los parentesis, gracias triby

Edito:
Si se puede lograr sin los parentesis, lo que si es más facil leerlos con parentesis. Es lo mismo con un if y else anidados, lo unico que lo haces más corto. Pero más dificil de leer (que ironia :S)
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Última edición por abimaelrc; 18/09/2009 a las 18:38
  #7 (permalink)  
Antiguo 18/09/2009, 20:00
Avatar de pato12  
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 16 años, 7 meses
Puntos: 101
Respuesta: ¿Se puede hacer esto con if (? :) anidados?

Cita:
..
Si se puede lograr sin los parentesis, lo que si es más facil leerlos con parentesis. Es lo mismo con un if y else anidados, lo unico que lo haces más corto. Pero más dificil de leer (que ironia :S)
o.O
Yo lo probe sin parentesis y no me ando.. con parentesis si :P
__________________
Half Music - www.halfmusic.com
  #8 (permalink)  
Antiguo 18/09/2009, 23:00
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: ¿Se puede hacer esto con if (? :) anidados?

Ok corillo, perdonen, tienen razon, hay que agrupar con paréntesis. Había hecho la prueba al principio y como me dio un resultado no verifique si era correcto.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
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 16:02.