AOWS

Just another adrian’s weblog

true == false

with 4 comments

Una de las muchas diferencias entre PHP y Java es que el primero realiza las conversiones entre tipos de forma implícita durante la ejecución; no necesita que nadie le diga en qué debe convertir las variables.

Esto puede tener consecuencias curiosas:

$a = 'string';
$b = 0;

if ( $a == true && $b == false && $a == $b )
{
    echo ( 'universe broken' );
}

Y es que, efectivamente, la condición anterior se cumple. Es decir, true == false.

Written by adrian

7 agosto, 2008 a 23:09

Publicado en Posts

Tagged with

4 comentarios

Subscribe to comments with RSS.

  1. Logico.

    al pasar $a a lógico para la comparación equivale a true, ya que es una cadena distinta de ”

    al pasar $b a lógico para la comparación equivale a false, ya que es un numero = 0

    al pasar $a a entero para la comparación equivale a 0 (observa el valor que devuelve intval(‘string’)), ya que no es una cadena que contenga un numero.

    Victor M. Varela

    8 agosto, 2008 at 10:13

  2. Sí, la explicación está clara. El problema (o no tan problema) está en la paradoja de que verdadero = falso, provocada por la conversión entre tipos de PHP.

    No es el único lenguaje con este tipo de curiosidades.

    adrian

    8 agosto, 2008 at 10:22

  3. PHP realiza una conversión implícita de tipos en la comparación que en otros lenguajes no está soportada.

    La “aparente” paradoja queda “destapada” si se hace una conversión utilizando moldes:

    if ( (boolean) $a == true && (boolean) $b == false && (int) $a == $b )
    {
    echo ( ‘universe broken’ );
    }

    Salta a la vista que $a no “significa lo mismo” (boolean) $a.

    Victor M. Varela

    8 agosto, 2008 at 10:38

  4. Se me olvidó comentar que existe el operador === que sí realiza la comprobación de los tipos y para el cual, en el ejemplo anterior, la comparación $a === $b es falso.

    Victor M. Varela

    8 agosto, 2008 at 10:40


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: