2011-12-22 20 views
6

He encontrado un problema con el tratamiento de php "0" de manera diferente.PHP trató "0" como vacío?

corro siguiente secuencia de comandos en 2 máquinas diferentes:

$a = "0"; 
if ($a) { 
    echo("helo"); 
} 

1) de la máquina local -> PHP 5.2.17 -> trató a "0" como válido e imprimir el 'helo'

2) Servidor -> PHP 5.3.6 -> trata el "0" como vacío/falso y no imprimirá el 'helo'

Esto se debe a la configuración de php (si es así, qué configuración) o php ¿versión?

+4

PHP 5.2.17 (Win32) * no * imprime "helo" cuando '$ a =" 0 ";' (acaba de probarlo en CLI y Apache para asegurarse). También debe haber tenido otro personaje en la cadena, tal vez un carácter en blanco que era invisible cuando se imprimió, como '\ r'? – DaveRandom

Respuesta

2

if($a) debería ser FALSE, según el documentation. También debería ser así en su máquina local. ¿Estás seguro de que en la máquina local no tienes espacio después del 0 o algo así? ("0<space>" sería TRUE.)

0

sonido extraño para mí, pensé '0' era falsa, puede revisar here

0

PHP puede interporate '0' como falsa, ya que sería equivilent a nulo/falso/0.

Sin embargo, también puede interporarlo como una cadena de "0". Por lo tanto, la declaración if sería verdadera, sin embargo, creo que sería un error a menos que escriba cast it to (string).

Como dijo Mario, verifique el strlen ($ a) o marque si (! Empty ($ a)) de esa manera obtendrá la respuesta definitiva.

Espero que esto ayude!