php中0与null与false与空的分别

发布时间:2019-01-21  栏目:Python  评论:0 Comments

 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
<?php

$test=0;

if($test==''){
    echo '<br />在php中,0即为空'; //被输出
}

if($test===''){
    echo '<br />在php中,0即为空'; //不被输出
}

if($test==NULL){
    echo '<br />在php中,0即为空'; //被输出
}

if($test===NULL){
    echo '<br />在php中,0即为空'; //不被输出
}

if($test==false){
    echo '<br />在php中,0即为空'; //被输出
}

if($test===false){
    echo '<br />在php中,0即为空'; //不被输出
}

?>

总结:

对于 【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

留下评论

网站地图xml地图