PHP isset()與empty()的使用區別詳解

PHP的isset()函數 通常用來檢測變量是否設置 格式:bool isset ( mixed var [, mixed var [, ...]] )php

功能:檢測變量是否設置函數

返回值:測試

若變量不存在則返回 FALSE 若變量存在且其值爲NULL,也返回 FALSE 若變量存在且值不爲NULL,則返回 TURE 同時檢查多個變量時,每一個單項都符合上一條要求時才返回 TRUE,不然結果爲 FALSE 版本:PHP 3, PHP 4, PHP 5 更多說明: 使用 unset() 釋放變量以後,它將再也不是 isset()。 PHP函數isset()只能用於變量,傳遞任何其它參數都將形成解析錯誤。 檢測常量是否已設置可以使用 defined() 函數。對象

PHP的empty()函數 判斷值爲否爲空it

格式:bool empty ( mixed var )變量

功能:檢查一個變量是否爲空配置

返回值:程序

若變量不存在則返回 TRUE 若變量存在且其值爲""、0、"0"、NULL、、FALSE、array()、var $var; 以及沒有任何屬性的對象,則返回 TURE 若變量存在且值不爲""、0、"0"、NULL、、FALSE、array()、var $var; 以及沒有任何屬性的對象,則返回 FALSE 版本:PHP 3, PHP 4, PHP 5 更多說明: empty()的返回值=!(boolean) var,但不會由於變量未定義而產生警告信息。參見轉換爲布爾值獲取更多信息。 empty() 只能用於變量,傳遞任何其它參數都將形成Paser error而終止運行。 檢測常量是否已設置可以使用 defined() 函數。 例子: empty() 與 isset() 的一個簡單比較 複製代碼 代碼以下:error

<?php $var = 0; // 結果爲 true,由於 $var 爲空 if (empty($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 ( empty ( $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 ( empty ( $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 ( empty ( $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 ( empty ( $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 ( empty ( $var )){ echo '變量$var的值爲空<Br>'; } else { echo '變量$var的值不爲空<Br>'; } echo "變量直接測試:<Br>"; if ( $var ){ echo '變量$var存在!<Br>'; } else { echo '變量$var不存在!<Br>'; } ?>

在使用 php 編寫頁面程序時,我常常使用變量處理函數判斷 php 頁面尾部參數的某個變量值是否爲空,開始的時候我習慣了使用 empty() 函數,卻發現了一些問題,所以改用 isset() 函數,問題再也不。 顧名思義,empty() 判斷一個變量是否爲「空」,isset() 判斷一個變量是否已經設置。正是這種所謂的「顧名思義」,令我開始時走了些彎路:當一個變量值等於0時,empty()也會成立(True),於是會發生 一些意外。原來,empty() 和 isset() 雖然都是變量處理函數,它們都用來判斷變量是否已經配置,它們倒是有必定的區別:empty還會檢測變量是否爲空、爲零。當一個變量值爲0,empty() 認爲這個變量同等於空,即至關於沒有設置。 好比檢測 $id 變量,當 $id=0 時,用empty() 和 isset() 來檢測變量 $id 是否已經配置,兩都將返回不一樣的值—— empty() 認爲沒有配置,isset() 可以取得 $id 的值:

相關文章
相關標籤/搜索