在PHP 5PHP空var == 0?
$my_var = "";
if ($my_var == 0) {
echo "my_var equals 0";
}
爲什麼它判斷爲真?在php.net中有關於它的一些參考?
在PHP 5PHP空var == 0?
$my_var = "";
if ($my_var == 0) {
echo "my_var equals 0";
}
爲什麼它判斷爲真?在php.net中有關於它的一些參考?
PHP is a weakly typed language。當使用相同的運算符==
進行測試時,空字符串和布爾值false將評估爲0。在另一方面,你可以強制它通過使用相同的操作===
這樣檢查類型:
$my_var = "";
if ($my_var === 0) {
echo "my_var equals 0";
} else {
echo "my_var does not equal 0";
}
這應該給你一噸的這方面的信息:How do the PHP equality (== double equals) and identity (=== triple equals) comparison operators differ?
在您的第一行中,您將$my_var
定義爲字符串。
在比較中,您將該變量與一個常量整數進行比較。
如果你想精確比較(我不知道爲什麼你需要比較整數的字符串沒有任何施法),你應該使用===
:
if ($my_var === 0) {
echo "my_var equals 0";
}
永遠不會回顯郵件。
PHP手冊中Comparison Operators section操作==
定義,如:
TRUE,如果$ a等於$ b型雜耍之後。
所以,這裏重要的是type juggling
。
事實上,在PHP Manual: types comparisons中,第二個表格告訴你整數0
等於字符串""
。
這裏是約布爾值
http://www.php.net/manual/en/language.types.boolean.php
和在這裏的PHP手冊的參考是針對NULL值的參考
http://www.php.net/manual/en/language.types.null.php
$my_var = '';
if ($my_var == 0) {
echo "my_var equals 0"
}
評估爲真,因爲「」是相同的NULL值爲false或0
字符串和整數不能直接與==
。所以PHP執行類型雜耍以查看是否有另一個明智的比較可用。
當一個字符串與一個整數進行比較時,該字符串首先被轉換爲一個整數。您可以找到轉換here的詳細信息。基本上,因爲""
不是有效的數字,所以轉換的結果是0
。因此,比較成爲0 == 0
,這顯然是對的。
對於大多數(如果不是全部)您的比較,您可能希望使用標識比較===
。
到目前爲止我一直很好==只是忘記了===存在... – JohnA 2012-03-19 23:59:50