2012-11-15 122 views
0

可能重複:
is_null($x) vs $x === null in PHP檢查,如果一個變量是空

在以下方面!== null!is_null()isset()都產生相同的結果:

$foo = null; 

function foo() { 
    if ($this->foo !== null) { 
     ... 
    } 
    if (!is_null($this->foo)) { 
     ... 
    } 
    if (isset($this->foo)) { 
     ... 
    } 
} 

哪一個是最快的,你會選擇哪一個在這方面表示讚賞?

+0

在PHP5不能使用可變isset()函數只爲http請求,發佈或獲得 – Rob

+3

@Robuust什麼?當然你可以將它用於任何變量。 '$ a = 5; if(isset($ a)){echo「a = {$ a}」; }' – Corbin

+1

關於哪個是最快的,[php.net的評論](http://www.php.net/manual/en/function.is-null.php#83588)包含了每個循環方法的基準超過10M次迭代。 – Beardy

回答

2

如果您不確定變量是否存在,請使用isset

實施例:

$content = (isset($_POST['content'])) ? $_POST['content'] : null; 

否則,使用嚴格比較空。

if ($content === null) { } 

(真的,我只是推我的意見對你有嚴格的比較。我只是覺得它看起來比is_null更好,它可能是一個非常小的快一點。)

1

只有在變量不可設置爲時,才使用isset。即如果你不知道這個變量是否存在。既然您確實知道此時應該存在,請不要使用isset

!== null!is_null之間的差異可以忽略不計,主要取決於您的偏好。我個人喜歡!== null

0
if ($this->foo !== null) { 
     //... 
} 

我更喜歡這種情況。

+0

感謝您的編輯 –

0

據我

if($this->foo!=""){ 

// ... }

這是最快的之一,併產生結果很快