PHP问号

时间:2011-07-05 13:47:30

标签: php

$hideCode = $likesObj->isAlreadyLikedByUser(facebookUID()) ? 'style="display:none;"' : '';

任何人都可以向我解释这个问号在这行代码中的作用吗?非常感谢!

8 个答案:

答案 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 = "";
}

纯粹主义:

它代表Ternary operation

答案 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子句。

(条件)? :