$hideCode = $likesObj->isAlreadyLikedByUser(facebookUID()) ? 'style="display:none;"' : '';
任何人都可以向我解释这个问号在这行代码中的作用吗?非常感谢!
答案 0 :(得分:46)
这称为Ternary Operator,它通用于多种语言,包括PHP,Javascript,Python,Ruby ...
$x = $condition ? $trueVal : $falseVal;
// same as:
if ($condition) {
$x = $trueVal;
} else {
$x = $falseVal;
}
需要注意的一点是,在PHP中使用三元组是这样的:
注意:请注意,三元运算符是一个语句,它不会计算变量,而是计算结果。知道是否要通过引用返回变量很重要。声明返回$ var == 42? $ a:$ b;因此,在返回引用函数中将不起作用,并且在以后的PHP版本中发出警告。 <子> source 子>
答案 1 :(得分:4)
实际上这个陈述代表Ternary operation,一个条件表达式:
// works like: (condition) ? if-true : if-false;
$hideCode = $likesObj->isAlreadyLikedByUser(facebookUID()) ? 'style="display:none;"':'';
在您的情况下,如果<{p},则$hideCode
的值为style="display:none;"
$likesObj->isAlreadyLikedByUser(facebookUID())
将返回true,否则它将为null或为空。
答案 2 :(得分:2)
这是IF语句的较短版本。
$hideCode = $likesObj->isAlreadyLikedByUser(facebookUID()) ? ' style="display:none;"':'';
实际上是:
if($likesObj->isAlreadyLikedByUser(facebookUID()))
{
$hideCode = 'style="display:none"';
}
else
{
$hideCode = "";
}
纯粹主义:
答案 3 :(得分:1)
这是简单的if-then-else类型逻辑:
(condition) ? (if-true-value) : (if-false-value)
所以在你的情况下,检查条件(即页面已经被用户喜欢);如果是(真实条件),则打印style="display:none;"
,以便不显示您正在使用的元素。否则,会打印一个空字符串,这相当于根本不打印任何东西,当然。
答案 4 :(得分:0)
这是三元运算符:它意味着
如果$likesObj->isAlreadyLikedByUser(facebookUID())
为真,请为变量指定style="display:none;
,否则请指定''
答案 5 :(得分:0)
这是ternary operator的一部分。第一部分是if-else语句的条件。问号后面是“if”块,冒号后面是“else”块。
答案 6 :(得分:-1)
$ hideCode = $ likesObj-&gt; isAlreadyLikedByUser(facebookUID())? '风格= “显示:无;”': '';
这与以下内容相同:
if ($likesObj->isAlreadyLikedByUser(facebookUID()))
{
$hideCode = 'style="display:none;"';
}
else
{
$hideCode = '';
}
答案 7 :(得分:-2)
这是一个非常紧凑的if子句。
(条件)? :