最近看PHP基礎知識,總結了下對于初學著經常陷入迷茫的0、false、空、null的比較。這些特殊值在比較大小的時候經常使初學者不知所措。在講之前我們先來說一下PHP的數據類型。
PHP支持八種原始類型:
四種標量類型: string(字符串)、integer(整型)、float(浮點型,也作 double 、boolean(布爾型)
兩種復合類型:array(數組)、object(對象)
兩種特殊類型:resource(資源)、NULL(空)
接下來,我們給變量賦以下值:
$a = ' '; ??$a_b = '0'; ? $a_c = '00' ; ?
$c = 0; ?$d = 0.0; ?
$e = false; ?
$f = array( ); ?$g = NUll;
判斷以下表達式的值:
比較表達式 ? ? ? ? ? ? 值 ? ? ? ? ? ? ? 分析
$a == $a_b ? ? ? ? ?false ?
$a_b == $a_c ? ? ? true
$a_b === $a_c ? ?false
$a ?== $c ? ? ? ? ? ? true
$a ?=== $c ? ? ? ? ?false
$a == $d ? ? ? ? ? ? true
$c == $d ? ? ? ? ? ? true
$c === $d ? ? ? ? ?false
$a == $e ? ? ? ? ? ? true
$a_b == $e ? ? ? ? true
$a_c ?== $e ? ? ? ?false
$c ?== $e ? ? ? ? ? true
$d ?== $e ? ? ? ? ?true
$a == $f ? ? ? ? ? false
$c == ?$f ? ? ? ? ?false
$e == $f ? ? ? ? ? true
$a == $g ? ? ? ? ?true
$a_b == $g ? ? ? false
$c == $g ? ? ? ? ? true
$e == $g ? ? ? ? ? true
$f == $g ? ? ? ? ? true
以上表達式的值,如果你都能答對,并且理解,那應該不用接著往下看了,說明你這塊兒知識掌握的很好了,平時運用足夠了,當然,再往深處研究只懂這些是不夠。
有一個規律,常用不同數據類型(標量類型)之間的比較規律,如果記住這個規律,那么標量之間的數據比較,就沒有問題了,但是和空數組 、null的比較還不夠。
(此規律摘自博客:http://blog.csdn.net/l1028386804/article/details/48771375)
規律:如果比較的數據中,有布爾數據類型,轉為布爾值比較,布爾值比較只有一個規則,
true ?> ?false;
?否則,如果有數字值,就轉為數字值比較,這是常規比較;
否則,如果倆邊都是純數字字符串,轉為數字比較;
否則,就按字符串比較。
其它,涉及到null 和 空數組,只有記住就好啦,暫時沒有發現好的理解方法,如果您有什么好的理解,歡迎指教。