Php 如何检查三状态(空、假、真)值?

Php 如何检查三状态(空、假、真)值?,php,isset,Php,Isset,我有这样一段代码: public function setValue($flag) { $this->value = isset($flag) ? (bool) $flag : null; } 我假设,$flag可以表示null、false或true。(我做类型转换的原因是我只关心类型。) 编辑: 这是我的目标: 如果$flag为null,则$this->value为null 如果(bool)$标志为false,则$this->value为false 如果(bool)$标志为tru

我有这样一段代码:

public function setValue($flag) {
  $this->value = isset($flag) ? (bool) $flag : null;
}
我假设,$flag可以表示null、false或true。(我做类型转换的原因是我只关心类型。)

编辑: 这是我的目标:

  • 如果$flag为null,则$this->value为null
  • 如果(bool)$标志为false,则$this->value为false
  • 如果(bool)$标志为true,则$this->value为true

这就是我的代码所说的。我想知道,我提交的代码是实现我的目标的好方法,还是有更好(更简单、更优雅)的方法?

如果值为
NULL
,则
isset
将返回
false
。您还应该通过编辑来检查

我只是阅读了你的编辑,如果你的代码是有效的,那么继续按照你已经在做的方式来做,因为这样做既方便又整洁。唯一的问题是,我会先检查
isset

$this->value = null;
if(isset($flag)) {
    setValue($flag);
}

public function setValue($flag) {
  $this->value = (bool) $flag
}

为什么不设置“
$flags”
呢?在将$flag用作函数的参数之前,而不是之后,检查$flag是否已设置更有意义。我知道会的。然后,$this->值为空。所以我想这样就行了。你应该充实一下你的答案。@Evan,我同意你的看法。但您应该注意到,您的代码与我的代码的功能完全相同——但我的代码较短;)将$flag类型转换为bool等于空($flag),不是吗?我没有任何问题;)我只是想知道我是否可以写得更好?或者是否有任何原生php方法可以实现我的目标?@jacek.ciach除了单独检查
isset
之外,不,我认为您不应该更改它。@jacek.ciach我已经做了最后一次更新,并举例说明了如何检查isset。