關於0,null,false等之間的比較

2021-08-08 09:56:03 字數 554 閱讀 7687

最近在複習,準備秋招,看到乙個比較經典的問題,具體的問題如下:

<?php

$str1 = null;

$str2 = false;

echo $str1==$str2 ? 『相等』 : 『不相等』;

$str3 = 」;

$str4 = 0;

echo $str3==$str4 ? 『相等』 : 『不相等』;

$str5 = 0;

$str6 = 』0′;

echo $str5===$str6 ? 『相等』 : 『不相等』;

?>

相等 相等 不相等

乍一看可能很多人都會被忽悠,在php中變數是以c語言的結構體來儲存的,空字串和null,false都是以值為0儲存的,其中這個結構體有個zend_uchartype;這樣的成員變數,他是用來儲存變數的型別的,而空字串的型別是string,null的型別是null,false是boolean。

所以單單比較任意兩者之間的值的話,都是0,也就是相等咯,但是「===」卻不同,這個還要比較兩者之間的型別,所以兩兩之間就會有不同,也就不相等了

php中NULL false 0 有何區別?

php中很多還不懂php中0,null和false之間的區別,這些區別有時會影響到資料判斷的正確性和安全性,給程式的測試執行造成很多麻煩。先看乙個例子 str1 null str2 false echo str1 str2 相等 不相等 str3 str4 0 echo str3 str4 相等 不...

讓C 中的0等於0

quote 作者 jonathan allen 譯者 王瑜珩 發布於 2009年6月1日 infoq quote c 對裝箱後的值型別支援的並不好。與vb不同,這樣的基本算術比較符無法在裝箱後的型別上得到正確的結果,即使所比較的值屬於同一型別。變數 型別 值 a int 0 b decimal 0....

關於命名等

區分 1.如果乙個字型名中包含多個單詞,例courier new。需要在font family宣告中的字型名兩邊加上引號 font family courier new serif 區分大小寫 2.class名 class屬性中如果存在空格,則表示此標籤引用了2個class屬性。3.id名 id名是...