'String' igual a 0
<?php
$var = '#$%&@?!!!';
if ($var == 0){
echo $var;
}
?>
Me estoy cansando de estas mierdas. Me estoy cansando mucho de estas mierdas...
<?php
$var = '#$%&@?!!!';
if ($var == 0){
echo $var;
}
?>
Me estoy cansando de estas mierdas. Me estoy cansando mucho de estas mierdas...
http://blog.tordek.com.ar/2008/05/en-defensa-de-php/
Si no te gusta, dejá de hacer boludeces y usá ===.
Leí tu post hace bastante.
Ayer hablando con un amigo llegamos a la conclusión de que si hay que hacer comparaciones de datos tipo: $_POST['campo'] == 0
o $row['campo'] == 0
, para el caso de un registro extraído de DB, como en ambos casos lo que se está comparando son strings, lo correcto es utilizar $_POST['campo'] == '0'
y $row['campo'] == '0'
.
Como ambos datos son de tipo string, de esta manera se evita lidiar con el casting de variables de PHP.
Hola, discutimos esto hace un tiempo en mi blog (y se armó tole-tole). El link es: http://aurelianito.blogspot.com/2007/12/php-es-kk-un-ejemplo-prctico.html
Al menos no están haciendo algo como if ($var = 0) { }
. Sí, hubo un tiempo en que yo tuve que aggionarme. Mucho basic en mi infancia.
Yo creo que el error es obviamente del programador...
Por ejemplo, llevandolo a la lógica 0 es el valor nulo numérico... entonces analizando brevemente te pregunto... cuál es el valor numerico de '#$%&@?!!!'... te respondes solo no?
Vos forzaste a que PHP lo evalúe... PHP solo te hizo caso y ciertamente es la respuesta correcta.
Adios y no te la tires contra PHP... simplemente aprendé a programar en PHP. jojo
@Leo: nada que no haya respondido en el comentario n° 2.
Ah, no leí bien el comentario... jo
De todas formas... en el manual habla de ese tipo de comparaciones BASTANTE claro, como para que se arme algún tipo de discusión al respecto:
http://ar2.php.net/manual/es/language.operators.comparison.php
"Si compara un entero con una cadena, la cadena es convertida a un número."
http://ar2.php.net/manual/es/language.types.string.php#language.types.string.conversion
"Cuando una cadena es evaluada en un ámbito numérico, el valor resultante y su tipo son determinados como sigue.
El valor string será evaluado como un float si contiene cualquier caracter entre '.', 'e', o 'E'. De otra forma, será evaluado como un integer.
El valor es dado por la porción inicial de la cadena. Si la cadena comienza con datos numéricos válidos, éstos serán el valor usado. De lo contrario, el valor será 0 (cero). Un dato numérico válido consiste de un signo opcional, seguido por uno o más dígitos (que pueden contener un punto decimal), seguidos por un exponente opcional. El exponente es una 'e' o 'E' seguida de uno o más dígitos."
Bien, ahora si aporté algo diferente a tu comentario :P.
Saludos.
@Leo: Es que no se armó ningún tipo de discución, va, o yo no la seguí.
Yo la corté en el segundo comentario ni bien reflexioné que lo que yo estaba haciendo estaba mal. Y lo comenté a propósito para retractarme al respecto.