1. 程式人生 > >php中0,空,null和false的區別【簡記】

php中0,空,null和false的區別【簡記】

種類型 sse ole string類 tar pty 字符 底層 is_null

 1 $a =  0; 
 2 $b="0"; 
 3 $c= ‘‘; 
 4 $d= null; 
 5 $e = false;
 6  
 7 echo "5個變量-原始測試類型";
 8     var_dump($a);//int 0
 9     var_dump($b);//string ‘0‘
10     var_dump($c);//string ‘‘
11     var_dump($d);//null
12     var_dump($e);//boolean false
13  
14 echo "<h4>empty測試</h4>";
15     var_dump
(empty($a));//true 16 var_dump(empty($b));//true 17 var_dump(empty($c));//true 18 var_dump(empty($d));//true 19 var_dump(empty($e));//true 20 21 echo "<hr>"; 22 var_dump(isset($a));//true 23 var_dump(isset($b));//true 24 var_dump(isset($c));//true 25 var_dump(isset($d
));//【false】 見結論一 26 var_dump(isset($e));//true 27 28 echo "<h4>(==)雙等式測試</h4>"; 29 var_dump($a == $b);//true 30 var_dump($a == $c);//true 31 var_dump($a == $d);//true 32 var_dump($a == $e);//true !! 33 34 var_dump($b == $c);//【false】見結論二 35 var_dump($b == $d);//【false】見結論二
36 var_dump($b == $e);//true 37 38 var_dump($c == $d);//true 39 var_dump($c == $e);//true 40 41 echo "<h4>(===)三等式測試</h4>"; 42 var_dump($a === $b);//false 43 var_dump($a === $c);//false 44 var_dump($a === $d);//false 45 var_dump($a === $e);//false 46 47 var_dump($b === $c);//false 48 var_dump($b === $d);//false 49 var_dump($b === $e);//false 50 51 var_dump($c === $d);//false 52 var_dump($c === $e);//false
總結: 對於 【0‘0‘ ‘‘null false】五種類型 empty操作以上五個變量,都返回false 強等於(===)比較 都為false,同強語言結果(三個等號比較不但要比較值,而且要比較類型) 但對於(==)比較,需要註意string類型,涉及到底層結構與類型轉換 結論一:關於變量類型的理解 1.null為不存在之意:php底層的zval空間裏(結構見下方)沒有存其value值,只存儲了一個type標誌其 IS_NULL(所以解釋了 empty(null)=true,isset(null)=false ,isset(‘‘)=true) 2.【0 ; ‘0‘ ; ‘‘ ; false 】:這四個為存在,php底層是開辟zval空間存儲,有value,有type 結論二: 1、string ‘0‘與 string ‘‘ 不相等,(想一下就明白,同類型比較【1個長度】的字符串怎麽可能 等於 【0個長度】 的字符串) 2、int 0 卻和 string ‘‘ 空相等,(非同類形比較,php會做類型轉換) 3、string ‘0‘ null 不相等,int 0 null 相等

文章轉自:https://blog.csdn.net/ty_hf/article/details/70217267

php中0,空,null和false的區別【簡記】