2013-02-19 51 views
0

可能是一個奇怪的,我希望可以在一行中完成。PHP如果和isset,如果變量沒有設置,並不存在

我必須有一個IF語句來檢查兩件事。

  • 第一個檢查是否設置了變量$ loggedInfo ['status']並且等於「client」。
  • 第二次檢查變量$ loggedInfo ['address1']是否已設置併爲空。

原因是當第一個變量等於員工時,'address1'變量不存在。

我有以下,但是當我登錄的工作人員仍然會檢查地址1

if((isset($loggedInfo['status'])=="client")&&(!$loggedInfo['address1'])){ 
    //Do something 
} 
+0

你想壓制訪問'地址1'的錯誤嗎? – 2013-02-19 08:56:03

回答

3

isset returs真或假。你必須爲實際值

if(
isset($loggedInfo['status']) && $loggedInfo['status']=="client" && 
isset($loggedInfo['address1']) && trim($loggedInfo['address1']) != '' 
) 
{ 
    //Do something 
} 
1

那麼你就不能的isset()的返回值與字符串"client"比較單獨做檢查,因爲它永遠不會平等這一點。要報價http://php.net/manual/en/function.isset.php,其返回值爲「TRUE如果存在var且其值不是NULL, FALSE否則」。

首先檢查是否設置

if ((isset($loggedInfo['status']) === true) && ($loggedInfo['status'] === "client") && (empty($loggedInfo['address1']) === true)) { 
    // Do something 
} 

主要採取遠離這應該是查找返回值每次使用功能,如empty(),在手動http://www.php.net/manual/en/function.empty.php。這將在未來爲您節省很多麻煩。

1
if((isset($loggedInfo['status']) && $loggedInfo['status']=="client") &&(empty($loggedInfo['address1'])){ 
    //Do something 
} 

isset()返回TRUE,如果給定變量與一個非空值的當前範圍限定。

empty()如果給定變量未在當前作用域中定義,或者如果使用被視爲「空」的值定義,則返回TRUE。這些值是:

NULL // NULL value 
0  // Integer/float zero 
''  // Empty string 
'0'  // String '0' 
FALSE // Boolean FALSE 
array() // empty array 

根據PHP版本,沒有屬性的對象也可能被視爲空。