PHP isset() 和 empty() 的使用

最近在用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函數

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章