Foros del Web » Programando para Internet » PHP »

Que significa esto??

Estas en el tema de Que significa esto?? en el foro de PHP en Foros del Web. Hola a todos, soy novato en php y encontré un código en inet el cual he editado y ha funcionado en su mayoría menos esta ...
  #1 (permalink)  
Antiguo 18/02/2012, 22:28
 
Fecha de Ingreso: febrero-2012
Mensajes: 61
Antigüedad: 12 años, 9 meses
Puntos: 1
Pregunta Que significa esto??

Hola a todos, soy novato en php y encontré un código en inet el cual he editado y ha funcionado en su mayoría menos esta parte que no entendí. Esto es:


Código:
echo ($campo == 'avisar') ? $avisar[$value] : $value;
Alguien me podría explicar que significa por favor ?
  #2 (permalink)  
Antiguo 18/02/2012, 22:38
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Que significa esto??

Eso es lo mismo que hacer:

Código PHP:
Ver original
  1. if ($campo == 'avisar') {
  2.     echo $avisar[$value];
  3. } else {
  4.     echo $value;
  5. }
__________________
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
  #3 (permalink)  
Antiguo 18/02/2012, 22:40
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Que significa esto??

Es una asignación ternaria y, lo que hace, es evaluar la condición, si es verdadero, se muestra lo que sigue después de ?, si no, entonces se muestra lo que sigue después de :, en resumen:

? Equivale al then de un if.
: Equivale al else.

En este caso lo tienes con un echo, pero puedes usarlo también para dar valor a una variable:

$var = (isset($_GET['var'])) ? $_GET['var'] : 'valor por default';
__________________
- León, Guanajuato
- GV-Foto
  #4 (permalink)  
Antiguo 18/02/2012, 22:51
 
Fecha de Ingreso: febrero-2012
Mensajes: 61
Antigüedad: 12 años, 9 meses
Puntos: 1
Pregunta Respuesta: Que significa esto??

Ok, muchas gracias andres y triby.

Requería hacer esto:

Código:
if ($campo == 'avisar') {
        echo $avisar[$value];
    } elseif ($campo == 'rango'){
		echo $rango[$value];
    }else { echo $value; }
Y al parecer funciono bien.

Trate de hacerlo con el ? y el : pero no me funciono...xD

Código:
echo ($campo == 'avisar') ? ($campo == 'rango') ? $avisar[$value] : $value;
  #5 (permalink)  
Antiguo 18/02/2012, 23:05
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Que significa esto??

No, porque en asignación ternaria es forzoso incluir : (else), creo que sería algo como:

echo ($campo == 'avisar') ? $avisar[$value] : (($campo == 'rango') ? $value : 'Valor si campo no es avisar ni rango');
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 18/02/2012, 23:07
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Que significa esto??

Si no se tienen en cuenta los paréntesis da resultados inesperados, sería así:

Código PHP:
Ver original
  1. echo ($campo == 'avisar' ? $avisar[$value] : ($campo == 'rango' ? $rango[$value] : $value));
__________________
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

Etiquetas: operador, simplificar, ternario
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

SíEste tema le ha gustado a 1 personas




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