0

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

我必须有一个 IF 语句来检查两件事。

  • 第一个检查变量 $loggedInfo['status'] 是否已设置并且等于“client”。
  • 第二个检查变量 $loggedInfo['address1'] 是否已设置并且为空。

原因是当第一个变量等于人员时,“address1”变量不存在。

我确实有以下内容,但是当我以员工身份登录时,它仍然会检查地址 1

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

3 回答 3

3

isset 返回真或假。您必须单独检查实际值

if(
 isset($loggedInfo['status']) && $loggedInfo['status']=="client" &&
 isset($loggedInfo['address1']) && trim($loggedInfo['address1']) != ''
)
{
  //Do something
}
于 2013-02-19T08:41:29.410 回答
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 版本,没有属性的对象也可能被认为是空的。

于 2013-02-19T08:57:18.447 回答
1

好吧,您只是无法将 的返回值isset()与 string进行比较"client",因为它永远不会等于那个值。引用http://php.net/manual/en/function.isset.php它的返回值是“TRUE如果 var 存在并且具有除 之外的值NULLFALSE否则”。

首先检查是否设置

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

关键应该是查找您使用的每个函数的返回值,例如empty()在手册http://www.php.net/manual/en/function.empty.php中。这将为您将来省去很多麻烦。

于 2013-02-19T08:41:49.673 回答