php中很多還不懂php中0,"",null和false之間的區別,這些區別有時會影響到資料判斷的正確性和安全性,給程式的測試執行造成很多麻煩。
先看乙個例子:
<?
$str1 = null;
$str2 = false;
echo $str1==$str2 ? 『相等』 : 『不相等』;
$str3 = "";
$str4 = 0;
echo $str3==$str4 ? 『相等』 : 『不相等』;
$str5 = 0;
$str6 = '0';
echo $str5===$str6 ? 『相等』 : 『不相等』;
$str7=0;
$str=false;
echo $str7==$str8 ? 『相等』 : 『不相等』;
?>
執行結果:
//相等,相等,不相等,相等。
原因是在php中變數是以c語言的結構體來儲存的,空字串和null,false都是以值為0儲存的,其中這個結構體有個zend_uchartype;這樣的成員變數,他是用來儲存變數的型別的,而空字串的型別是string,null的型別是null,false是boolean。
這一點可以用echo gettype('');和echogettype(null);來列印看看!而===運算子是不單比較值,還有比較型別的,所以第三個為false!
所以可以這樣說===是等於下面的函式:
functioneq(
$v1,
$v2) else
}所以空字串(''),false,null和0是值相等而型別不一樣!
注意:null是一種特殊的型別.
兩種情況下為null
1. $var = null;
2. $var;
3.""、0、"0"、null、false、array()、var $var; 以及沒有任何屬性的物件都將被認為是空的,如果var 為空,則返回 true。
php中0, ,null和false的區別
php中很多還不懂php中0,null和false之間的區別,這些區別有時會影響到資料判斷的正確性和安全性,給程式的測試執行造成很多麻煩。先看乙個例子 str1 null str2 false echo str1 str2 相等 不相等 str3 str4 0 echo str3 str4 相等 不...
php中0, ,null和false的區別
php中很多還不懂php中0,null和false之間的區別,這些區別有時會影響到資料判斷的正確性和安全性,給程式的測試執行造成很多麻煩。先看乙個例子 str1 null str2 false echo str1 str2 相等 不相等 str3 str4 0 echo str3 str4 相等 不...
型別串php中null和false和0之間的區別
近期個人幾篇文章介紹了改型別串的文章.關聯文章的位址 php中很多還不懂php中0,null和false之間的區別,這些區別有時會影響到資料判斷的正確性和安全性,給程式的測試執行形成很多費事。所以必須好好的看好了下面的例子 簡單來說就是 他們的 和 的區別 第乙個是值相稱就為true 第二個必須是值...