我很抱歉这个模糊的问题标题。我不确定这种简写方法的实际名称是什么。如果有人想帮助澄清我应该如何参考,我会很高兴改变问题标题。
在以下代码段中:
$account = $value->uid ? user_load($value->uid) : '';
我对这段代码的作用感到有些困惑。以下是我认为它的作用:
if $value->uid exists
then $account = user_load($value->uid)
else
$account = ''
这是对的吗?
答案 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中被视为“虚假”:
答案 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)
不只是检查变量是否存在。如果变量是undefined
,null
,false
,0
或''
(我可能会忘记一些),它将返回false