内联条件语句澄清

时间:2013-09-27 18:50:53

标签: php syntax

我很抱歉这个模糊的问题标题。我不确定这种简写方法的实际名称是什么。如果有人想帮助澄清我应该如何参考,我会很高兴改变问题标题。

在以下代码段中:

$account = $value->uid ? user_load($value->uid) : '';

我对这段代码的作用感到有些困惑。以下是我认为它的作用: if $value->uid exists then $account = user_load($value->uid) else $account = ''

这是对的吗?

6 个答案:

答案 0 :(得分:3)

它与:

相同
if ($value->uid) {
    $account = user_load($value->uid);
} else {
    $account = '';
}

答案 1 :(得分:3)

他们被称为三元声明。是的,你几乎是正确的。

  

如果$value->uid存在,则$account = user_load($value->uid)其他$account = ''

这样更正确:

  

如果$value->uid的输出为TRUE,则为$account = user_load($value->uid),否则为$account = ''


使用普通if/else块,它是:

if( $value->uid ) {
    $account = user_load($value->uid);
} else {
    $account = '';
}

可以找到文档here

答案 2 :(得分:1)

它被称为三元运算符。

请参阅此链接:http://davidwalsh.name/php-shorthand-if-else-ternary-operators

答案 3 :(得分:1)

这称为ternary operator

这意味着,如果$value->uid 真实,那么$account = user_load($value->uid)。否则,$account = ''

这些值在PHP中被视为“虚假”:

  • null
  • 0
  • 0.0
  • “0”
  • “”
  • false
  • array()

答案 4 :(得分:1)

这是PHP ternary operator,其功能与其他语言中的三元组完全相同:

$value = ($test_value) ? 'true result' : 'false result';

完全等同于

if ($test_value) {
    $value = 'true result';
} else {
    $value = 'false result';
}

答案 5 :(得分:1)

你的假设是正确的。

$account = $value->uid ? user_load($value->uid) : '';

相同
if ($value->uid) {
  $account = user_load($value->uid);
} else  {
  $account = '';
}

if ($value->uid)不只是检查变量是否存在。如果变量是undefinednullfalse0''(我可能会忘记一些),它将返回false