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