废肥菜比八练习isset empty

根据https://newaurora.pixnet.net/blog/post/171735396-php-isset%28%29%E5%92%8Cempty%28%29%E7%9A%84%E5%8D%80%E5%88%A5
所描述的isset empty 来做练习

$b = NUll;$c = 0;$f = "0";$d = 1;$e = ""; $g = "Abc";//下面用isset() empty()函数来测试//isset()函数是用来判断变数是不是有存在,如果有就回传 1(true),如果没有就回传空值//empty()函数用来判断"值"是不是空的,如果没有就回传 1(true),如果有"值"就不回传// a不存在// isset a=// empty a=TRUE(1)echo "isset a=" . isset($a) . "<br>"; //$a是存在吗? => 没有就回传空值echo "empty a=" . empty($a) . "<br>"; //$a是空的吗? => 是空的 => empty a=1// b=NULL// isset b=// empty b=TRUE(1)echo "isset b=" . isset($b) . "<br>"; //$b是存在吗? => 没有就回传空值echo "empty b=" . empty($b) . "<br>"; //$b是空的吗? => 是空的 => empty b=1// c=0 (int)// isset c=TRUE(1)// empty c=TRUE(1)// 0(int) 被empty当成没有了?!!echo "isset c=" . isset($c) . "<br>"; //$c是存在吗? => 有存在回传1echo "empty c=" . empty($c) . "<br>"; //$c是空的吗? => 0(int)是空的 => empty c=1echo "-----------------------------<br>";// f="0" (string)// isset f=TRUE(1)// empty f=TRUE(1)// "0"(string) 被empty当成没有了?!!echo "isset f=" . isset($f) . "<br>"; //$f是存在吗? => 有存在回传1echo "empty f=" . empty($f) . "<br>"; //$f是空的吗? => 0(string)是空的 => empty f=1// d=1 (int)// isset d=TRUE(1)// empty d=echo "isset d=" . isset($d) . "<br>"; //$d是存在吗? => 有存在回传1echo "empty d=" . empty($d) . "<br>"; //$d是空的吗? => 1(int)有值 => 不回传// e="" (string)// isset e=TRUE(1)// empty e=TRUE(1)echo "isset e=" . isset($e) . "<br>"; //$e是存在的吗 => 有存在回传1echo "empty e=" . empty($e) . "<br>"; //$e是空的吗? => ""(string)是空的 => empty e=1// g="Abc" (string)// isset g=TRUE(1)// empty g=echo "isset g=" . isset($g) . "<br>"; //$g是存在吗? => 有存在回传1echo "empty g=" . empty($g) . "<br>"; //$g是空的吗? => "Abc"(string)有值 => 不回传

b=NULL
isset b=
在PHP手册中就有说到
https://www.php.net/isset
isset() will return FALSE if testing a variable that has been set to NULL
stackoverflow 中的问题
https://stackoverflow.com/questions/7191626/isset-and-empty-what-to-use

官方出的比较Table表
https://www.php.net/manual/en/types.comparisons.php

比较特别的状况_浮点数 与 字串"浮点数"
拿在上述中的 c=0(int) 与 f="0"(string)中
c = 0 //isset c=TRUE(1) empty c=TRUE(1)
f="0" //isset f=TRUE(1) empty f=TRUE(1)

$a = 0;//照里来说// isset a=TRUE(1)// empty a=TRUE(1)//事实是// isset a=1// empty a=1echo "isset a=" . isset($a) . "<br>";echo "empty a=" . empty($a) . "<br>";$b = 0.00;//照里来说// isset b=TRUE(1)// empty b=TRUE(1)//事实是// isset b=1// empty b=1echo "isset b=" . isset($b) . "<br>";echo "empty b=" . empty($b) . "<br>";$c = "0.0" . "<br>";//照里来说// isset c=TRUE(1)// empty c=TRUE(1)//事实是// isset c=1//  ** empty c=echo "isset c=" . isset($c) . "<br>";echo "empty c=" . empty($c) . "<br>";  // 此判定有值 => 不回传

$c = "0.0"
empty "0.0" = 判定有值... => 不回传
就某些状况真的容易搞错就是了

<---2020-05-26更新--->

今天同事问了个问题,结果自己也搞混了empty()
假如阵列里的第一笔是空值,那阵列是否为空;

个人一直是以 是否为空值 来做empty的逻辑判断,但程式再跑时
array就是一笔一笔去跑的,所以empty(array(第一笔资料为0,或是空值时)) empty会过吗?
的问题就出来了

假如资料长这样

    $a = array(        array('0', ''),        array('name', 'jamce'),        array('ID', 123),     );        print_r($a);        if (empty($a)){        echo 'a is empty';    } else {        echo 'a is not empty';    }

可以发现print出来是这样

Array(    [0] => Array        (            [0] => 0            [1] =>         )    [1] => Array        (            [0] => name            [1] => jamce        )    [2] => Array        (            [0] => ID            [1] => 123        ))a is not empty

那改成这样呢?

    $a = array(      array('', ''),            //第一笔的资料为空      array('name', 'jamce'),      array('ID', 123),    );

print出来是这样,第一笔 的第一个值为空

Array(    [0] => Array        (            [0] =>             [1] =>         )    [1] => Array        (            [0] => name            [1] => jamce        )    [2] => Array        (            [0] => ID            [1] => 123        ))                            // a is not empty

喔喔!果然不是空值

    $a = array(      array('', ''),        // 改成全空值      array('', ''),      array('', ''),    );
Array(    [0] => Array        (            [0] =>          // 还有key            [1] =>         )    [1] => Array        (            [0] =>             [1] =>         )    [2] => Array        (            [0] =>             [1] =>         ))                       // a is not empty

改为0

    $a = array(         // a is not empty    array(0, 0)    );

Array里只剩下空 array()! 跟Array里只剩下''

    $a = array(      array()    );                  // a is not empty        $a = array(         // Array([0] => ) a is not empty        ''    );

结论,empty是不是空的判断 在阵列中,与阵列带的值无关,只要里面有东西empty就不成立


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章