PHP在三元组中使用empty,isset或is_null

时间:2017-05-02 22:16:29

标签: php ternary-operator

我的PHP生疏了,我正在努力解决这个问题。我正在使用论坛软件(SMF),并且无法真正告诉我正在尝试检查的变量的值。

所有成员都被分配了post_group例如高级会员

某些用户被分配了一个特殊的group,例如版主。

我想将变量$memberType设置为group(如果有),如果不是post_group

E.g

用户是主持人和高级会员。 $memberType = 'Moderator'

用户只是初级会员。 $memberType = 'Junior Member'

这是我尝试过的:

$memberType = is_null($message['member']['group']) ? $message['member']['group'] : $message['member']['post_group'];

我还尝试了empty()isset()而不是is_null,但似乎没有一个人能够得到一致的结果。

is_null仅适用于post_groupempty()仅应用post_group,但奇怪的是不适用于我的“新手”类。 isset()仅适用post

我能以任何方式得到一致的结果吗?

2 个答案:

答案 0 :(得分:1)

我猜你在问题中错过了!empty应该适用于您的方案。符合empty

的手册页
  

如果var存在并且具有非空的非零值,则返回FALSE。否则返回TRUE。

     

以下内容被认为是空的:

     
      
  • “”(空字符串)
  •   
  • 0(0为整数)
  •   
  • 0.0(0作为浮动)
  •   
  • “0”(0作为字符串)
  •   
  • NULL
  •   
  • FALSE
  •   
  • array()(空数组)
  •   
  • $变种; (声明的变量,但没有值)
  •   

总而言之,这样的事情应该有效。

$memberType = empty($message['member']['group']) === FALSE ? $message['member']['group'] : $message['member']['post_group'];

答案 1 :(得分:0)

您可能需要的是:

$memberType = empty($message['member']['group']) ? $message['member']['post_group'] : $message['member']['group'];

基本上是说(伪代码):

IF $message['member']['group'] IS EMPTY

$memberType = $message['member']['post_group'];

ELSE

$memberType = $message['member']['group'];
  

empty()

以下值被视为空:

  • ""(空string
  • 00integer
  • 0.00float
  • "0"0string
  • NULL
  • FALSE
  • array()(空array
  • $var;(声明的变量,但没有值)