2011-12-22 12 views
6

Wystąpił problem z php traktując "0" inaczej.PHP traktowało "0" jako puste?

Uruchamiam następujący scenariusz na 2 różnych maszyn:

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

1) Maszyna lokalna -> PHP 5.2.17 -> to traktowane "0" jako ważny i wydrukować 'helo'

2) Serwer -> PHP 5.3.6 -> traktował "0" jako pusty/fałszywy i nie drukuje 'helo'

Czy to ze względu na konfigurację php (jeśli tak, jaka konfiguracja) lub php wersja?

+4

PHP 5.2.17 (Win32) robi * nie * drukuje "helo", gdy '$ a =" 0 ";' (po prostu przetestowałem to na CLI i poprzez Apache, aby się upewnić). Musiałeś mieć również inną postać w ciągu znaków - być może białą spację, która była niewidoczna po wydrukowaniu, jak '\ r'? – DaveRandom

Odpowiedz

2

if($a) powinny być FALSE, jak na documentation. Powinno to być również na twojej lokalnej maszynie. Czy jesteś pewien, że na lokalnym komputerze nie masz miejsca po 0 lub czymś? ("0<space>" byłoby TRUE.)

0

Dźwięk dziwne dla mnie, pomyślałem: "0" był fałszywy, można przejrzeć here

0

PHP może interporate "0" jako fałszywe, ponieważ byłoby to equivilent null/false/0.

Jednak może również współdzielić go jako ciąg "0". Tak więc instrukcja if zwróci true, jednak myślę, że byłby to błąd, chyba że wpiszesz go do (string).

Tak jak powiedział Mario, sprawdź strlen ($ a) lub sprawdź, czy (! Pusty ($ a)) w ten sposób otrzymasz ostateczną odpowiedź.

Mam nadzieję, że to pomoże!

Powiązane problemy