PHP中empty 和isset 的區別

2021-07-10 01:51:08 字數 3286 閱讀 1161

雖然記得,"empty()" 是檢測變數是否為空,"isset()"是檢測變數是否設定,但是有時候還是容易凌亂,看千遍不如自己寫一遍。

手冊中是這樣定義的

"empty

"  判斷乙個變數是否被認為是空的,當乙個變數並不存在,或者它的值等同於false,那麼它會被認為不存在。如果變數不存在的話,"empty"並不會產生警告。

「isset" 檢測變數是否設定,並且不是null。如果已經使用了 "unset" 釋放了乙個變數後,它將不再是 "isset()" 。若使用 "isset()" 測試乙個被設定成null的變數,將返回false。同時要注意的是乙個null位元組("\0")並不等同於php的null常數。

下面我們來**裡面看看

<?php 

$a = null;

$b = 'null';

$c = 0;

$d = '0';

$e = '';

$f = ' ';

$g;$i = false;

$j = 'false';

echo '$a的型別是'.gettype($a).'

'; //$a的型別是null

echo '$b的型別是'.gettype($b).'

'; //$b的型別是string

echo '$c的型別是'.gettype($c).'

'; //$c的型別是integer

echo '$d的型別是'.gettype($d).'

'; //$d的型別是string

echo '$e的型別是'.gettype($e).'

'; //$e的型別是string

echo '$f的型別是'.gettype($f).'

'; //$f的型別是string

echo '$g的型別是'.gettype($g).'

'; //notice: undefined variable: g in e:\www\pdemo\demo6.php on line 17 $g的型別是null

echo '$i的型別是'.gettype($i).'

'; //$i的型別是boolean

echo '$j的型別是'.gettype($j).'

'; //$j的型別是string

echo "";

echo '$a isset()後的結果:';

var_dump(isset($a)); //$a isset()後的結果:bool(false)

echo '$b isset()後的結果:';

var_dump(isset($b)); //$b isset()後的結果:bool(true)

echo '$c isset()後的結果:';

var_dump(isset($c)); //$c isset()後的結果:bool(true)

echo '$d isset()後的結果:';

var_dump(isset($d)); //$d isset()後的結果:bool(true)

echo '$e isset()後的結果:';

var_dump(isset($e)); //$e isset()後的結果:bool(true)

echo '$f isset()後的結果:';

var_dump(isset($f)); //$f isset()後的結果:bool(true)

echo '$g isset()後的結果:';

var_dump(isset($g)); //$g isset()後的結果:bool(false)

echo '未定義變數isset()後的結果:';

var_dump(isset($h)); //未定義變數isset()後的結果:bool(false)

echo '$i isset()後的結果:';

var_dump(isset($i)); //$g isset()後的結果:bool(false)

echo '$j isset()後的結果:';

var_dump(isset($j)); //$g isset()後的結果:bool(false)

echo "";

echo '$a empty()後的結果:';

var_dump(empty($a)); //$a empty()後的結果:bool(true)

echo '$b empty()後的結果:';

var_dump(empty($b)); //$b empty()後的結果:bool(false)

echo '$c empty()後的結果:';

var_dump(empty($c)); //$c empty()後的結果:bool(true)

echo '$d empty()後的結果:';

var_dump(empty($d)); //$d empty()後的結果:bool(true)

echo '$e empty()後的結果:';

var_dump(empty($e)); //$e empty()後的結果:bool(true)

echo '$f empty()後的結果:';

var_dump(empty($f)); //$f empty()後的結果:bool(false)

echo '$g empty()後的結果:';

var_dump(empty($g)); //$g empty()後的結果:bool(true)

echo '未定義變數empty()後的結果:';

var_dump(empty($h)); //未定義變數empty()後的結果:bool(true)

echo '$i empty()後的結果:';

var_dump(empty($i)); //$g empty()後的結果:bool(true)

echo '$j empty()後的結果:';

var_dump(empty($j)); //$g empty()後的結果:bool(true)

執行結果如下圖所示:

看的出來, "isset()"  把值為null的null型別的和沒賦值的,沒定義的變數,認為是空,返回false;  」empty()「 把 值為null的null型別的,integer型別的0,字串型別的0,字串型別的 '' ,未定義的變數,布林型別的false,認為是空,返回true。不過有意思的是 『』判斷為空返回true,『 』卻判斷不為空,返回false。

結果就是這樣了,大家可以看看,或者執行下。

php中isset 和empty 區別

1 isset 用於檢測變數是否設定值 若變數不存在則返回 false 若變數存在且其值為null,也返回 false 若變數存在且值不為null,則返回 ture 同時檢查多個變數時,每個單項都符合上一條要求時才返回 true,否則結果為 false empty 用於檢測變數是否為空 若變數不存在...

php中isset和empty區別

php語言isset和empty的區別 empty 判斷乙個變數是否為 空 isset 判斷乙個變數是否已經設定。正是這種所謂的 顧名思義 令我開始時走了些彎路 1.當乙個變數值等於0時,empty 也會成立 true 因而會發生一些意外。原來,empty 和 isset 雖然都是變數處理函式,它們...

PHP中isset 和empty 的使用

若變數不存在則返回false 若變數存在且其值為null,也返回 false 若變數存在且值不為null,則返回 ture 同時檢查多個變數時,每個單項都符合上一條要求時才返回 true,否則結果為 false 使用 unset 釋放變數之後,它將不再是 isset php函式isset 只能用於變...