Anuncia aquí

Escribiendo código seguro – Más sobre comparación de tipos

Tenemos la siguiente porción de código:

PHP:

<?php
    function foo($respuesta) {
        if ($respuesta > 10) {
            return true;
        } else {
            return $respuesta;
        }
    }
    if (foo(11)) {
        echo "11 es mayor que 10<br />";
    }       
    if (foo(9)) {
        echo "9 es mucho mayor que 10<br />";
    }
?>
 

Lo que hace la función es comparar la variable $respuesta con 10, si es mayor que este entonces devuelve true, caso contrario devuelve el valor de $respuesta. Veamos la salida:

CODE:

11 es mayor que 10
9 es mucho mayor que 10
 

El error está en que PHP toma a cualquier número mayor que cero como un valor verdadero, por eso es que vemos esta salida incoherente.

La Solución

Igual que en la entrada anterior, es mejor usar comparación estricta de tipos, esto es:

PHP:

<?php
    function foo($respuesta) {
        if ($respuesta > 10) {
            return true;
        } else {
            return $respuesta;
        }
    }
    if (foo(11) === true) {
        echo "11 es mayor que 10<br />";
    }       
    if (foo(9) === true) {
        echo "9 es mucho mayor que 10<br />";
    }
?>
 

Ahora si la salida será correcta:

CODE:

11 es mayor que 10
 

Espero sus comentarios y duras, mañana seguiremos con más ;)

Referencias

Esta entrada fue publicada en PHP

Publicar un Comentario

Tu email nunca será publicado o compartido. Los campos requeridos están marcados con un *

*
*

Puedes usar estas etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>