本文實(shí)例講述了php中isset與empty函數(shù)的困惑與用法。分享給大家供大家參考,具體如下:
在學(xué)習(xí)php有一段時(shí)間之后,感覺自己的基礎(chǔ)知識(shí)還是有點(diǎn)不牢固,有的問題就不怎么知道,比如就有一個(gè),在判斷一個(gè)變量是否為空的情況下,我就不知道是用isset()
還是empty()
。今天我就來分析該用哪個(gè)函數(shù)。
isset()
:用于判斷一個(gè)函數(shù)是否被設(shè)置過,如果設(shè)置過就為true,否則就為false,但是有一個(gè)例外,就是如果一個(gè)變量被設(shè)置成null的話,此時(shí)也會(huì)返回的也是false。
1
2
3
4
5
6
|
<?php $a = null; var_dump(isset( $a )); //a變量已賦值,但是被設(shè)置成null,故返回false var_dump(isset( $b )); //內(nèi)存中不存在變量b,故返回false var_dump(isset( $_GET [ 'id' ])); //如果$_GET['id']變量不存在,則返回false;如果$_GET['id']存在,則返回true ?> |
empty()
:用于判斷一個(gè)變量是否為空,如果是整形的0,浮點(diǎn)型的0.0,字符型的' ‘和'0',還有布爾型的false,NULL型的null,空數(shù)組等
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<?php $a = null; var_dump( empty ( $a )); //true $b = "" ; var_dump( empty ( $b )); //true $c = "0" ; var_dump( empty ( $b )); //true $c = 0; var_dump( empty ( $b )); //true $e = false; var_dump( empty ( $e )); //true $f = array (); var_dump( empty ( $f )); //true var_dump( empty ( $g )); //$g變量不存在,返回true var_dump( empty ( $_GET [ 'id' ])); //如果$_GET['id']不存在,則返回true;如果存在,但是值是上述條件,則還是返回true。 ?> |
總結(jié):如果是判斷一個(gè)變量是否存在,可以用isset()
和empty()
;如果判斷變量的值是否為空,那么就用empty()
。
注意:以前我在做項(xiàng)目的時(shí)候,出現(xiàn)了這樣的一個(gè)問題,我把select下拉列表框的選中的值傳到服務(wù)器,服務(wù)器從超全局?jǐn)?shù)組中獲取到了值,但是當(dāng)時(shí)我不清楚isset()
和empty()
的區(qū)別,當(dāng)時(shí)只知道他們都能判斷變量是否存在,結(jié)果我用了empty()
函數(shù),最后,就出現(xiàn)bug了,我用empty()
進(jìn)行判斷,把我傳過來的變量的值為0的情況就給排除了。
所有在這里提醒大家,如果只是判斷變量是否為空,最好還是用isset()
。
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
原文鏈接:https://blog.csdn.net/baochao95/article/details/51723192