Google

viernes, 10 de octubre de 2008

PHP Trucos Estúpidos: (true == false)

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

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

¿Qué está pasando aquí? Veamos estas tres cláusulas en detalle:
  • ( 'string' == true ) porque cualquier cadena no nula evalua a true cuando es comparada con un boolean
  • ( 0 == false )porque el entero 0 se somete a la conversión implícita a boolean y evalúa a false
  • Finalmente, ( 'string' == 0 ) porque un string es silenciosamente promovido a entero cuando es comparado con un entero. Si la cadena es la representación ASCII de un número (por ejemplo, "123"), se le asigna ese valor. En caso de que no contiene un número, se le asigna el valor 0. Por lo tanto, nuestra tercera cláusula se evalúa como verdadera. Vaya ...
Fuente