Ver Mensaje Individual
  #20 (permalink)  
Antiguo 21/11/2008, 06:45
Avatar de nicolaspar
nicolaspar
 
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 20 años
Puntos: 34
Respuesta: Comprobar varios ISSET en una sola sentencia

Cita:
Iniciado por Keysher Ver Mensaje
Los operadores or y || no son completamente equivalentes. || tiene más prioridad que or, por lo que hay situaciones en las que no se comportan de igual forma.

Se ve más claro con asignaciones. El operador = tiene preferencia sobre or pero no sobre || por lo que:

Código php:
Ver original
  1. $prueba = FALSE || TRUE; // El valor de $prueba será: TRUE
  2. $prueba = FALSE or TRUE; // El valor de $prueba será: FALSE. Esto es porque se hace primero la asignación de $prueba = FALSE y después el or.
  3. $prueba = (FALSE or TRUE); // El valor de $prueba será: TRUE. Con los parentesis forzamos a realizar primero el or y después la asignación.

Orden de precedencia de operadores en PHP:
http://es.php.net/manual/es/language...ors.precedence

En esta sitación concreta entiendo que no debería influir mucho el operador que se utilice. No veo del todo la lógica de la condición, yo creo que sería con and, es decir, quieres que entren en la "página principal" si no existe NINGUNA de esas variables, ¿no?

Perfecto!!, es eso mismo, un simple tema de prioridades!, otro ejemplo de esto con comparaciones sería:
Código php:
Ver original
  1. <?
  2. $var = 'NADA';
  3. if( $var = 'Hola' && 1==1 ){}
  4. echo $var ,'<br />'; #1, porque evalua primero 'Hola' && 1==1 lo que da true y lo asigna a $var, ya que && tiene prioridad sobre =
  5. $var = 'NADA';
  6. if( $var = 'Hola' and 1==1 ){}
  7. echo $var ,'<br />'; #Da hola, = tiene prioridad sobre and
  8. ?>


Acá tienen la tabla de prioridad: http://docs.php.net/manual/kr/langua...precedence.php

Gracias Keysher!
__________________
Mi punto de partida es Que Bueno Lo Nuevo