我遇到过这种语法:var ==“”? “ - ”:var。有人可以解释一下吗?

时间:2009-05-06 10:41:57

标签: php syntax

代码就是这个:

$vendors[] = array(
    "id" => $row['vendorID'],
    "name" => $row['name'] == "" ? "-" : $row['name'],
    "tel1" => $row['phone1'] == "" ? "-" : $row['phone1'],
    "tel2" => $row['phone2'] == "" ? "-" : $row['phone2'],
    "mail" => $row['email'] == "" ? "-" : $row['email'],
    "web" => $row['web'] == "" ? "-" : $row['web']);

有人可以解释一下它究竟是什么吗?看起来像Alternative syntax,但我没有设法找到信息。

谢谢你

5 个答案:

答案 0 :(得分:24)

这是ternary operator

  

如果(expr1) ? (expr2) : (expr3)评估为expr2,则expr1表达式评估为TRUE;如果expr3评估为expr1,则表达式FALSE

答案 1 :(得分:4)

这意味着:如果值为“”(空),则设置为“ - ”(连字符),否则设置为它是什么。

只需读取一个?b:c为«如果是b,那么c»。

答案 2 :(得分:3)

是的,这是其他人所说的,但在代码可读性方面并没有真正推荐。请小心使用,不要在没有托架的情况下使用它。

$myvar = ($condition == TRUE) ? $valueIfTrue : $valueIfFalse;

而不是

if ($condition)
{
    $myvar = $valueIfTrue;
}
else
{
    $myvar = $valueIfFalse;
}

答案 3 :(得分:1)

PHP坚持要求调用“三元运算符” - 请参阅http://www.phpbuilder.com/manual/language.operators.comparison.php了解语法和示例。

答案 4 :(得分:0)

您也可以像"name" => $row['name'] == "" ?? "-"

那样执行此操作

即a == b ?? c如果a = b为真,则使用else使用c