最近在用PHP寫一個表單提交的小功能,需要對提交數據進行一定的處理,在這裏用到了 isset() 和 empty() 兩個方法。
首先來說一下 isset() 吧,官方給出的解釋是:檢測變量是否已設置並且非 NULL。
需要注意的是,這裏的非NULL不是指空值。
下面來看一下 isset() 的返回值:
1.若變量不存在則返回FALSE
2.若變量存在且其值爲NULL,也返回FALSE
3.若變量存在且值不爲NULL,則返回TURE
如果已經使用 unset() 釋放了一個變量之後,它將不再是 isset()。若使用 isset() 測試一個被設置成 NULL
的變量,將返回 FALSE
。同時要注意的是 null 字符("\0")並不等同於 PHP 的 NULL
常量。
如果一次傳入多個參數,那麼 isset() 只有在全部參數都以被設置時返回 TRUE
計算過程從左至右,中途遇到沒有設置的變量時就會立即停止。
<?php
$var = '';
// 結果爲 TRUE,所以後邊的文本將被打印出來。
if (isset($var)) {
echo "這個變量存在且不爲null";
}
// 在後邊的例子中,我們將使用 var_dump 輸出 isset() 的返回值。
// the return value of isset().
$a = "test";
$b = "anothertest";
var_dump(isset($a)); // TRUE
var_dump(isset($a, $b)); // TRUE
unset ($a);
var_dump(isset($a)); // FALSE
var_dump(isset($a, $b)); // FALSE
$foo = NULL;
var_dump(isset($foo)); // FALSE
?>
好了,下面我們接着看 empty()方法:
檢查一個變量是否爲空。
判斷一個變量是否被認爲是空的。當一個變量並不存在,或者它的值等同於FALSE
,那麼它會被認爲不存在。如果變量不存在的話,empty()並不會產生警告。
它的返回值:
當var
存在,並且是一個非空非零的值時返回 FALSE
否則返回 TRUE
.
以下的東西被認爲是空的:
- "" (空字符串)
- 0 (作爲整數的0)
- 0.0 (作爲浮點數的0)
- "0" (作爲字符串的0)
NULL
FALSE
- array() (一個空數組)
- $var; (一個聲明瞭,但是沒有值的變量)
empty() 與 isset() 的一個簡單比較:
<?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';
}
?>
最後進行一下小總結:
當要判斷一個變量是否已經聲明的時候可以使用isset函數
當要判斷一個變量是否已經賦值且不爲空,可以用empty函數
當要判斷一個變量是否存在且不爲空,先isset函數,再用empty函數