我很抱歉这个模糊的问题标题。我不确定这个速记方法的实际名称是什么。如果有人想帮助澄清我应该如何引用这个,我很乐意更改问题标题。
在以下代码片段中:
$account = $value->uid ? user_load($value->uid) : '';
我对这段代码的作用有点困惑。这是我认为它的作用:
if $value->uid exists
then $account = user_load($value->uid)
else
$account = ''
那是对的吗?
它与以下内容相同:
if ($value->uid) {
$account = user_load($value->uid);
} else {
$account = '';
}
它们被称为三元语句。是的,你几乎是正确的。差不多。
如果
$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 = '';
}
文档可以在这里找到。
它被称为三元运算符。
请参阅此链接:http ://davidwalsh.name/php-shorthand-if-else-ternary-operators
你的假设是部分正确的。
$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
这称为三元运算符。
这意味着,如果$value->uid
是真的,那么$account = user_load($value->uid)
。否则,$account = ''
。
这些值在 PHP 中被认为是“虚假的”:
它是 PHP三元运算符,其工作方式与其他语言中的三元非常相似:
$value = ($test_value) ? 'true result' : 'false result';
完全等价于
if ($test_value) {
$value = 'true result';
} else {
$value = 'false result';
}