if语句-php if和isset以及if变量未设置且不存在


if statement - php if and isset and if variable is not set and doesnt exist

可能是一个奇怪的问题,我希望可以在一行中完成。

我必须有一个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.这将在将来为你省去很多麻烦。