2011-11-30 54 views
3

愚蠢的問題,我知道,但如果我不知道變量$var是否設置與否,我應該使用速記isset和!空

isset($var) && !empty($var) 

檢查它是否有任何價值,或者是

!empty($var)夠了嗎?如果第二種情況下$var爲空,會不會有問題?

+2

爲什麼不只是檢查PHP手冊http://php.net/manual/en/function.empty.php – Cyclonecode

+0

有了這個標準,在StackOverflow中就沒有任何問題了吧? – federicot

+1

克里斯特有一個觀點。手冊指出'empty()與(boolean)var相反,只是當變量沒有設置時不會產生警告。「你可以從中得出結論:*不使用isset()。但我並不反對你的問題,因爲其他人可能不會這樣做。 – simshaun

回答

9

issetempty是兩種語言結構。 empty()內部會首先執行isset檢查,然後否定該檢查,或者檢查值等於布爾上下文中FALSE的值。因此,!empty()就足夠了。

+0

不好意思,如果$ var被設置爲0,那麼它被設置,但它被認爲是空的。 – kylex

+1

@kylex。馬里奧是特別正確的,因爲該操作也檢查變量是否不爲空。如果他只想知道變量是否被設置,那麼是的,他應該使用isset()。 – simshaun

+0

讓'$ a = 0;'然後'var_dump(isset($ a)&&!empty($ a));''var_dump(!empty($ a));'都會說'false'。相同的未定義的變量。 – mario

1

我認爲你可以完全丟棄isset()在你使用empty()情況下,由於empty()檢查變量是否是第一次設置,也

這樣畢竟,使用

if (!empty($var)) { 
    //isset and not empty 
} 
2

是的,你可以刪除isset()

empty()(boolean) var相反,除了不產生報警時,變量未設置

您可以用下面的代碼中看到這一點:

error_reporting(E_ALL); 

var_dump(empty($var)); 
bool(true) 

(注缺乏一個未定義的變量警告)

2

您應該使用isset()函數,如!如果您的$ var爲0,empty()將返回false。

<?php 
$var = 0; 

// Evaluates to true because $var is empty 
if (empty($var)) { 
    echo '$var is either 0, empty, or not set at all'; 
} 

//Evaluates false because $var is empty 
if(!empty($var)){ 

} 

// Evaluates as true because $var is set 
if (isset($var)) { 
    echo '$var is set even though it is empty'; 
} 
?> 
+0

@tandu:是的,會的。 0被認爲是空的,這是在手冊中說明:http://php.net/manual/en/function.empty.php – kylex