empty 判斷一個變量是否為“空”,isset 判斷一個變量是否已經設置,正是這種所謂的“顧名思義”,令我開始時走了些彎路,當一個變量值等于0時,empty()也會成立(true),因而會發生一些意外,原來,empty 和 isset 雖然都是變量處理函數,它們都用來判斷變量是否已經配置,它們卻是有一定的區別:empty還會檢測變量是否為空、為零,當一個變量值為0,empty 認為這個變量同等于空,即相當于沒有設置.
比如檢測 $id 變量,當 id=0 時,用empty 和 isset 來檢測變量 $id 是否已經配置,兩都將返回不同的值—— empty 認為沒有配置,isset 能夠取得 $id 的值,代碼如下:
- $id=0;
- emptyempty($id)?print "it's empty .":print "it's $id .";
- //結果:it's empty .
- print "<br>";
- !isset($id)?print "it's empty .":print "it's $id .";
- //結果:it's 0 .
這意味著,我們在使用變量處理函數時,當該變量可能出現0的值,使用 empty 要小心,這個時候用 isset 取代它更明智一些.
當一個php頁面的 url 尾部參數出現 id=0 時(比如:test.php?id=0),試比較,代碼如下:
if(empty($id)) $id=1; - 若 id=0 ,id 也會為1
if(!isset($id)) $id=1; - 若 id=0 ,id 不會為1
可分開運行以下代碼檢測上述推斷,代碼如下:
- if(emptyempty($id)) $id=1;
- print $id; // 得到 1
- if(!isset($id)) $id=1;
- print $id; //得到 0
看個實例,代碼如下:
- <?php
- $var = 0;
- // 結果為 true,因為 $var 為空
- if (emptyempty($var)) {
- echo '$var is either 0 or not set at all';
- }
- // 結果為 false,因為 $var 已設置
- if (!isset($var)) {
- echo '$var is not set at all';
- }
- ?>
由于這是一個語言結構而非函數,因此它無法被變量函數調用,empty() 只檢測變量,檢測任何非變量的東西都將導致解析錯誤,換句話說,后邊的語句將不會起作用:empty(addslashes($name)).
下面是經過腳本之家測試過的一段isset與empty函數詳細例子的代碼,看完這個基本上就差不多了,代碼如下:
- <?php
- error_reporting(e_all);
- echo '<b>未定義$var</b><br>';
- echo "isset測試:<br>";
- if ( isset ( $var ))
- {
- echo '變量$var存在!<br>' ;
- }
- echo "empty測試:<br>";
- if ( emptyempty ( $var )){
- echo '變量$var的值為空<br>';
- }
- else
- {
- echo '變量$var的值不為空<br>';
- }
- echo "變量直接測試:<br>";
- if ( $var ){
- echo '變量$var存在!<br>';
- }
- else {
- echo '變量$var不存在!<br>';
- }
- echo '----------------------------------<br>';
- echo '<b>$var = ''</b><br>';
- echo "isset測試:<br>";
- $var = '';
- if ( isset ( $var ))
- {
- echo '變量$var存在!<br>' ;
- }
- echo "empty測試:<br>";
- if ( emptyempty ( $var )){
- echo '變量$var的值為空<br>';
- }
- else
- {
- echo '變量$var的值不為空<br>';
- }
- echo "變量直接測試:<br>";
- if ( $var ){
- echo '變量$var存在!<br>';
- }
- else {
- echo '變量$var不存在!<br>';
- }
- echo '----------------------------------<br>';
- echo '<b>$var = 0</b><br>';
- echo 'isset測試:<br>';
- $var = 0 ;
- if ( isset ( $var ))
- {
- echo '變量$var存在!<br>' ;
- }
- echo "empty測試:<br>";
- if ( emptyempty ( $var )){
- echo '變量$var的值為空<br>';
- }
- else
- {
- echo '變量$var的值不為空<br>';
- }
- echo "變量直接測試:<br>";
- if ( $var ){
- echo '變量$var存在!<br>';
- }
- else {
- echo '變量$var不存在!<br>';
- }
- echo '----------------------------------<br>';
- echo '<b>$var = null</b><br>';
- echo 'isset測試:<br>';
- $var = null ;
- if ( isset ( $var ))
- {
- echo '變量$var存在!<br>' ;
- }
- echo "empty測試:<br>";
- if ( emptyempty ( $var )){
- echo '變量$var的值為空<br>';
- }
- else
- {
- echo '變量$var的值不為空<br>';
- }
- echo "變量直接測試:<br>";
- if ( $var ){
- echo '變量$var存在!<br>';
- }
- else {
- echo '變量$var不存在!<br>';
- }
- echo '----------------------------------<br>';
- echo '<b>$var ="php"</b><br>';
- echo 'isset測試:<br>';
- $var = "php";
- if ( isset ( $var ))
- {
- echo '變量$var存在!<br>' ;
- }
- echo "empty測試:<br>";
- if ( emptyempty ( $var )){
- echo '變量$var的值為空<br>';
- }
- else
- {
- echo '變量$var的值不為空<br>';
- }
- echo "變量直接測試:<br>";
- if ( $var ){
- echo '變量$var存在!<br>';
- } //開源軟件:Vevb.com
- else {
- echo '變量$var不存在!<br>';
- }
- ?>
新聞熱點
疑難解答