在使用 php 編寫頁面程式時,我經常使用變數處理函式判斷 php 頁面尾部引數的某個變數值是否為空,開始的時候我習慣了使用 empty() 函式,卻發現了一些問題,因此改用 isset() 函式,問題不再。
顧名思義,empty 判斷乙個變數是否為「空」,isset 判斷乙個變數是否已經設定。正是這種所謂的「顧名思義」,令我開始時走了些彎路:當乙個變數值等於0時,empty()也會成立(true),因而會發生一些意外。原來,empty 和 isset 雖然都是變數處理函式,它們都用來判斷變數是否已經配置,它們卻是有一定的區別:empty還會檢測變數是否為空、為零。當乙個變數值為0,empty 認為這個變數同等於空,即相當於沒有設定。
比如檢測 $id 變數,當 $id=0 時,用empty 和 isset 來檢測變數 $id 是否已經配置,兩都將返回不同的值—— empty 認為沒有配置,isset 能夠取得 $id 的值:
$id=0;
empty($id)?print "it's empty .":print "it's $id .";
//結果:it's empty .
print "
";!isset($id)?print "it's empty .":print "it's $id .";
//結果:it's 0 .
這意味著,我們在使用變數處理函式時,當該變數可能出現0的值,使用 empty 要小心,這個時候用 isset 取代它更明智一些。
當乙個php頁面的 url 尾部引數出現 時(比如:test.php?id=0),試比較:
if(empty($id)) $id=1; - 若 ,id 也會為1
if(!isset($id)) $id=1; - 若 ,id 不會為1
可分開執行以下**檢測上述推斷:
if(empty($id)) $id=1;
print $id; // 得到 1
if(!isset($id)) $id=1;
print $id; //得到 0
PHP空值判斷
在使用 php 編寫頁面程式時,我經常使用變數處理函式判斷 php 頁面尾部引數的某個變數值是否為空,開始的時候我習慣了使用 empty 函式,卻發現了一些問題,因此改用 isset 函式,問題不再。顧名思義,empty 判斷乙個變數是否為 空 isset 判斷乙個變數是否已經設定。正是這種所謂的 ...
php判斷空值 PHP空值檢測函式與方法彙總
幾乎任何入口的http請求我們都會去檢測它攜帶的引數,類似 isset empty 的函式一定不少見。以下的測試結果基於 php7.16 是否定義判斷 isset 可以使用 isset 函式判斷乙個變數是否定義,陣列內某個元素是否被初始化,它的效率比 array key exists 高4倍左右 a...
74 php 上傳檔案空值判斷
遭遇問題 需要判斷表單是否上傳了附件 後台這麼寫 if files attachment name 結果是這樣的 array 5 type array 1 tmp name array 1 error array 1 size array 1 bool true bool false int 5 n...