php中0, ,null和false的區別

2021-06-08 19:10:21 字數 990 閱讀 8146

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 第二個必須是值...