Escribiendo código seguro - Más sobre comparación de tipos
Por: braulio | 25 Septiembre 2006 | Ver comentarios |
Tenemos la siguiente porción de código:
<?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:
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
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:
11 es mayor que 10
Espero sus comentarios y duras, mañana seguiremos con más

