Lun Abr 24, 2006 4:52 am
|
 |
dacons
Perlero Nuevo

|
Registrado: 27 Feb 2006
Mensajes: 48
|
|
| Operador and |
|
|
Hola a todos, mi duda es ¿qué otra función hace el operador and?. Sé lo que hace en una condición, pero por ejemplo en este código:
| Código: |
$a = 'manzanas';
$b = 'peras';
print $a and $b ; |
¿Porqué imprime manzanas? ¿qué es lo que hace? |
|
|
|

Lun Abr 24, 2006 5:27 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4084
Ubicación: Valladolid, España
|
|
|
|
|
Es muy curioso lo que pasa.
Resulta que los operadores lógicos devuelven el último valor o expresión evaluada que confirme toda la expresión lógica.
En caso de un 'and', todas las expresiones deben ser ciertas para devolver un valor de cierto, y en ese caso, devuelve el último valor de la última expresión evaluada (la que está más a la derecha).
En el caso planteado, deberían ser las 'peras' las que deberían de aparecer en pantalla, pero lo que salen son las 'manzanas'.
¿Dónde está el fallo?
Pues resulta que
es lo mismo que si hubieras escrito
| Código: |
| (print $a) and $b; |
Es decir, imprimes 'manzanas' porque es la primera expresión a evaluar; como es una expresión cierta (imprimimos un valor), luego evalua 'peras'. Pero el resultado del and se pierde.
Cosa distinta es escribir entonces
| Código: |
| print ($a and $b); |
que, por fin y de esta manera, salen nuestras queridas 'peras'...
Y cosa distinta sería si quisiéramos imprimir $a sólo en el caso de que $b fuera cierta:
|
|

Lun Abr 24, 2006 6:07 am
|
 |
dacons
Perlero Nuevo

|
Registrado: 27 Feb 2006
Mensajes: 48
|
|
|
|
|
| Muchas gracias de nuevo |
|
Powered by phpBB © 2001, 2005 phpBB Group
|