在php中empty(),isset(),is_null()三個(gè)函數(shù)在很多朋友看來都差不多,但我們簡單想一下好像又不同,一個(gè)空值,一個(gè)是否是一個(gè)變量,是否為null,下面我來舉例來說明.
很多人對于 PHP 的 empty(),isset() 及 is_null() 三個(gè)函數(shù)的用法比較模糊,網(wǎng)上的資料也很多,但未必能講的清楚,下面給出一個(gè)測試實(shí)例,對于理解這三個(gè)函數(shù)的區(qū)別會有很大的好處.
測試的類型如下:
- <?php
- $a;
- $b = false;
- $c = '';
- $d = 0;
- $e = null;
- $f = array();
- ?>
empty(),代碼如下:
- <?php
- var_dump(emptyempty($a));
- var_dump(emptyempty($b));
- var_dump(emptyempty($c));
- var_dump(emptyempty($d));
- var_dump(emptyempty($e));
- var_dump(emptyempty($f));
- ?>
- // 輸出
- bool(true)
- bool(true)
- bool(true)
- bool(true)
- bool(true)
- bool(true)
從代碼中可以看出,只要數(shù)據(jù)類型是否為空或假,empty()就輸出true.
isset(),代碼如下:
- <?php
- var_dump(isset($a));
- var_dump(isset($b));
- var_dump(isset($c));
- var_dump(isset($d));
- var_dump(isset($e));
- var_dump(isset($f));
- ?>
- // 輸出phpfensi.com
- bool(false)
- bool(true)
- bool(true)
- bool(true)
- bool(false)
- bool(true)
可以看出isset()只能用來判斷是否為NULL和未定義.
警告:isset() 只能用于變量,因?yàn)閭鬟f任何其它參數(shù)都將造成解析錯(cuò)誤,若想檢測常量是否已設(shè)置,可使用 defined()函數(shù).
當(dāng)要 判斷一個(gè)變量是否已經(jīng)聲明的時(shí)候 可以使用 isset 函數(shù)
當(dāng)要 判斷一個(gè)變量是否已經(jīng)賦予數(shù)據(jù)且不為空 可以用 empty 函數(shù)
當(dāng)要 判斷 一個(gè)變量 存在且不為空 先isset 函數(shù) 再用 empty 函數(shù)
比如檢測 $id 變量,當(dāng) $id=0 時(shí),用empty() 和 isset() 來檢測變量 $id 是否已經(jīng)配置,兩都將返回不同的值—— empty() 認(rèn)為沒有配置,isset() 能夠取得 $id 的值,代碼如下:
- $id=0;
- emptyempty($id)?print "It's empty .":print "It's $id .";
- //結(jié)果:It's empty .
- print "<br>";
- !isset($id)?print "It's empty .":print "It's $id .";
- //結(jié)果:It's 0 .
這意味著,我們在使用變量處理函數(shù)時(shí),當(dāng)該變量可能出現(xiàn)0的值,使用 empty() 要小心,這個(gè)時(shí)候用 isset 取代它更明智一些.
當(dāng)一個(gè)php頁面的 URL 尾部參數(shù)出現(xiàn) id=0 時(shí)(比如:test.php?id=0),試比較,代碼如下 :
if(empty($id)) $id=1; - 若 id=0,id 也會為1
if(!isset($id)) $id=1; - 若 id=0,id 不會為1
可分開運(yùn)行以下代碼檢測上述推斷,代碼如下:
- if(emptyempty($id)) $id=1;
- print $id; // 得到 1
- if(!isset($id)) $id=1;
- rint $id; //得到 0
is_null(),代碼如下:
- <?php
- var_dump(is_null($a));
- var_dump(is_null($b));
- var_dump(is_null($c));
- var_dump(is_null($d));
- var_dump(is_null($e));
- var_dump(is_null($f));
- ?>
- // 輸出
- bool(true)
- bool(false)
- bool(false)
- bool(false)
- bool(true)
- bool(false)
is_null 字面意思了.
由此可見 empty() 可以用來判定所有的數(shù)據(jù)類型是否為空或假,而 is_null 與 isset 基本一樣,只能用來判斷是否為NULL和未定義.
后來給大家附一張表,下面一張表可以很清楚的說明他們之間的關(guān)系:
變量 empty is_null isset
$a=”” true false true
$a=null true true false
var $a true true false
$a=array() true false true
$a=false true false true
$a=15 false false true
$a=1 false false true
$a=0 true false true
$a=”0” true false true
$a=”true” false false true
$a=”false” false false true
轉(zhuǎn)載請注明來源:php empty(), isset(), is_null()函數(shù)用法實(shí)例哈爾濱品用軟件有限公司致力于為哈爾濱的中小企業(yè)制作大氣、美觀的優(yōu)秀網(wǎng)站,并且能夠搭建符合百度排名規(guī)范的網(wǎng)站基底,使您的網(wǎng)站無需額外費(fèi)用,即可穩(wěn)步提升排名至首頁。歡迎體驗(yàn)最佳的哈爾濱網(wǎng)站建設(shè)。
