Php 内联条件语句澄清

Php 内联条件语句澄清,php,syntax,Php,Syntax,我很抱歉这个模糊的问题标题。我不确定这个速记方法的实际名称是什么。如果有人想帮助澄清我应该如何引用这个问题,我很乐意更改问题的标题 在以下代码段中: $account=$value->uid?用户_加载$value->uid: 我对这段代码的作用有点困惑。以下是我认为它的作用: 如果$value->uid存在 然后$account=user\u加载$value->uid 其他的 $account= 是这样吗?与以下内容相同: if ($value->uid) { $account

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

在以下代码段中:

$account=$value->uid?用户_加载$value->uid:

我对这段代码的作用有点困惑。以下是我认为它的作用: 如果$value->uid存在 然后$account=user\u加载$value->uid 其他的 $account=

是这样吗?

与以下内容相同:

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

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

如果存在$value->uid,则$account=user\u load$value->uid else$account=

这将更加正确:

如果$value->uid的输出为TRUE,则$account=user\u加载$value->uid,否则,$account=

使用正常的if/else块,它应该是:

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

文档可以找到。

它被称为三元运算符

请参阅此链接:

这被称为

这意味着,如果$value->uid是真实的,那么$account=user\u加载$value->uid。否则,$account=

这些值在PHP中被认为是错误的:

无效的 0 0 0 错误的 大堆 这是PHP,它的工作原理与其他语言中的三元结构非常相似:

$value = ($test_value) ? 'true result' : 'false result';
完全等同于

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

你的假设部分正确

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

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

if$value->uid不只是检查变量是否存在。如果变量未定义、null、false、0或,则返回false,我可能忘记了这里的一些答案

大多数答案都是正确的,但有一点需要考虑:可读性。三元运算符不好读。代码的可维护性是一个重要方面,易读易读的代码使维护代码变得更容易。一本关于这个主题的推荐书@burzum-是的,可读性在这里是一个很大的问题-只是现在还不清楚这里发生了什么。不过,我现在明白了,这要感谢给出的优秀答案。因此,如果$value->uid返回的值是322,那么这将被认为是真实的,是吗?是的。看一看关于真实和虚假价值的更透彻的解释。