可能是一个奇怪的问题,我希望可以在一行中完成。
我必须有一个IF声明,它将检查两件事。
- 第一个检查变量$loggedInfo['status']是否已设置并等于"client"
- 第二个检查变量$loggedInfo[‘address1']是否已设置并且为空
原因是当第一个变量等于staff时,"address1"变量就不存在了。
我确实有以下信息,但当我以员工身份登录时,它仍然会检查地址1
if((isset($loggedInfo['status'])=="client")&&(!$loggedInfo['address1'])){
//Do something
}
isset返回true或false。你必须单独检查的实际值
if(
isset($loggedInfo['status']) && $loggedInfo['status']=="client" &&
isset($loggedInfo['address1']) && trim($loggedInfo['address1']) != ''
)
{
//Do something
}
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版本的不同,没有属性的对象也可能被认为是空的。
您无法将isset()
的返回值与字符串"client"
进行比较,因为它永远不会等于这个值。引用http://php.net/manual/en/function.isset.php其返回值为"如果var存在,则为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.这将在将来为你省去很多麻烦。