2011-04-11 11 views
19

¿Alguien puede explicar cómo se mapea null en estas declaraciones?nulo con PHP < and > operadores

null>0; //=> bool(false) 
null<0; //=> bool(false) 
null==0; //=> bool(true) 

pero

null<-1; // => bool(true) 

supongo que es algún problema de asignación, pero no puedo descifrarlo.

Probado con PHP 5.3.5-1 con Suhosin-Patch.

+0

Erm, ¿qué es lo que estás tratando de hacer? Todas esas declaraciones son válidas. – Khez

+1

Use '===' tipo de igualdad comprobada si quiere precisión – JohnP

+0

Si solo el nulo de PHP fuera como un SQL nulo ... –

Respuesta

23

Te gustaría apuntar a unas pocas páginas: http://php.net/manual/en/types.comparisons.php http://php.net/manual/en/language.operators.comparison.php http://php.net/manual/en/language.types.boolean.php

Así que en su último ejemplo:

null<-1 => bool(true) 

El null es echado a false y la -1 es echado a true, false es menos que true

En sus dos primeros ejemplos null se echa a false y 0 es echado a false, false no es menor o mayor que false pero es igual a ella.

¡Oh, la diversión de null! : D

+0

quisiera aclarar: D, bastante curioso por qué el nulo se convierte en bool en lugar de (int) al tener (int) en el otro lado de < –

Cuestiones relacionadas