0

我很抱歉这个模糊的问题标题。我不确定这个速记方法的实际名称是什么。如果有人想帮助澄清我应该如何引用这个,我很乐意更改问题标题。

在以下代码片段中:

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

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

那是对的吗?

4

6 回答 6

3

它与以下内容相同:

if ($value->uid) {
    $account = user_load($value->uid);
} else {
    $account = '';
}
于 2013-09-27T18:52:50.303 回答
3

它们被称为三元语句。是的,你几乎是正确的。差不多

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

这会更正确:

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


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

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

文档可以在这里找到。

于 2013-09-27T18:52:58.320 回答
1

它被称为三元运算符。

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

于 2013-09-27T18:53:19.320 回答
1

你的假设是部分正确的。

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

是相同的

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

if ($value->uid)只是检查变量是否存在。undefined如果变量是, null, false,0''(我可能在这里忘记了一些),它将返回 false

于 2013-09-27T18:55:30.057 回答
1

这称为三元运算符

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

这些值在 PHP 中被认为是“虚假的”:

  • 无效的
  • 0
  • 0.0
  • “0”
  • “”
  • 错误的
  • 大批()
于 2013-09-27T18:53:38.733 回答
1

它是 PHP三元运算符,其工作方式与其他语言中的三元非常相似:

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

完全等价于

if ($test_value) {
    $value = 'true result';
} else {
    $value = 'false result';
}
于 2013-09-27T18:53:53.777 回答