php if和isset以及如果未设置变量且不存在

时间:2013-02-19 08:38:24

标签: php if-statement isset

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

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

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

原因是当第一个变量等于staff时,'address1'变量不存在。

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

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

3 个答案:

答案 0 :(得分:3)

isset返回true或false。你必须单独检查实际值

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

答案 1 :(得分:1)

嗯,你无法将isset()的返回值与字符串"client"进行比较,因为它永远不会相等。要引用http://php.net/manual/en/function.isset.php,如果var存在且其值不是TRUE,则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}}。这将在未来为您节省许多麻烦。

答案 2 :(得分: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版本,没有属性的对象也可能被视为空。