Foros del Web » Programando para Internet » PHP »

Se puede poner 2 grupos de condiciones en un if()

Estas en el tema de Se puede poner 2 grupos de condiciones en un if() en el foro de PHP en Foros del Web. hola solo eso . se puede hacer algo como: if($a==1 && $b==2 || $c==3 && $d==4){hace algo} o sea que "hace algo" si $a=1 y ...
  #1 (permalink)  
Antiguo 07/08/2008, 09:18
 
Fecha de Ingreso: diciembre-2005
Ubicación: Barcelona
Mensajes: 1.428
Antigüedad: 18 años, 4 meses
Puntos: 15
Se puede poner 2 grupos de condiciones en un if()

hola

solo eso . se puede hacer algo como:

if($a==1 && $b==2 || $c==3 && $d==4){hace algo}

o sea que "hace algo" si $a=1 y $b=2 o si $c=3 y $d=4


o para que los tome como par de grupo debo poner un [ ] en algun sitio
algo como:
if([$a==1 && $b==2] || [$c==3 && $d==4])


gracias
  #2 (permalink)  
Antiguo 07/08/2008, 09:52
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Se puede poner 2 grupos de condiciones en un if()

No te compliques demasiado y usa paréntesis para agrupar condiciones. Al evaluar las sentencias, PHP lo hace de izquierda a derecha. Como sabes, existen dos "operadores" si es que deseas incluir varias condiciones, and (&&) y or (||). El primero requiere que todas las condiciones sean calificadas como true, y el segundo, que basta una de ellas, para que toda la expresión sea verdadera.

Ahora, chécate estos ejemplos

Código PHP:
if ( false or true ) {} // Verdadero
if ( false or false ) {} // Falso
if ( true or true ) {} // Verdadero
 
# A
if ( true or false and true ) {} // VERDADERO 
 
# B
if ( false and false or true and true ) {} // VERDADERO
 
# C
if ( false and true or true and false ) ) {} // FALSO 
Haber si se me entendió. Mas o menos es así. Cuando hay varias condiciones, PHP separa las condiciones en base a las estructuras OR, ya que como vimos, basta con que una de ellas se cumpla para que la expresión sea vedadera. Comienza a evaluarlas una por una. Si no ponemos paréntesis, PHP tiene en cuenta el siguiente operador (OR o AND).

Si el siguiente es un OR, quiere decir que la condición terminó y, si fue evaluada como verdadera, todo fue verdadero. Si es un AND, PHP sigue evaluando las siguientes hasta que encuentre otro OR, y luego recién emite una respuesta.

Por eso, en el ejemplo A, la primera condición evaluó como true, y como el operador que sigue es un OR, PHP considera esa primera evaluación como verdadera y toda la expresión en sí sale verdadera.

En el segundo caso (B), tenemos dos condiciones (separemos en base al OR). La primera de ellas (false and false) obviamente devuelve false. La segunda (true and true) devuelve verdadero. La expresión resulta, entonces, verdadera.

En el tercer caso (C), y que es lo mismo que en tu ejemplo, tenemos igual dos condiciones (false and true y true and false, y en este caso ambas devuelven false.



Por lo tanto, está bien así como lo pones, ya que:

Código:
if ( a and b or c and d and e or f or g and h and i and j )
es igual a
Código:
if( 
  ( a and b ) or 
  ( c and d and e ) or 
  ( f ) or 
  ( g and h and i and j ) 
)
Pero es más práctico que las agrupes y así te evitas confusiones con condiciones más complejas.

Saludos,
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 19:25.