代码之家  ›  专栏  ›  技术社区  ›  aborted

“:”和“?”的含义[复制品]

  •  0
  • aborted  · 技术社区  · 14 年前

    可能重复:
    the code “ : ” in php

    我经常看到很多使用 ? : 但我真的不明白这是为了什么。这里有一个例子:

    $selected = ($key == $config['default_currency']) ? ' selected="selected"' : '';
    

    有人能帮我收拾一下吗?:)

    5 回复  |  直到 14 年前
        1
  •  6
  •   AlcubierreDrive    14 年前
    (condition ? val1 : val2)
    

    评估为 val1 如果 condition 是真的,或者 val2 如果 条件 是假的。


    由于php 5.3,您可能还会看到一个更加模糊的表单,它忽略了 Val1 :

    (val0 ?: val2)
    

    评估为 val0 如果 Val0 计算为非假值,或 Val2 否则。伊克斯!


    http://php.net/manual/en/language.operators.comparison.php

        2
  •  14
  •   Vincent Savard Midhun    14 年前

    它是三元运算符。这基本上是一条线上的if/else。

    例如,这些行:

    if (!empty($_POST['value'])) {
        $value = $_POST['value'];
    } else {
        $value = "";
    }
    

    可以用此行缩短:

    $value = (!empty($_POST['value'])) ? $_POST['value'] : "";
    

    它可以使代码更容易阅读 如果你不滥用它 .

        3
  •  2
  •   Viper_Sb    14 年前

    这是if语句的简写

    您可以将该语句转换为:

    if ($key == $config['default_currency']) {
        $selected = ' selected="selected"';
    } else {
        $selected = '';
    }
    
        4
  •  2
  •   dan04    14 年前

    这是 ternary conditional operator 就像在C中一样。

    您的代码相当于:

    if ($key == $config['default_currency'])
    {
       $selected = ' selected="selected"';
    }
    else
    {
       $selected = '';
    }
    
        5
  •  0
  •   Brian Beckett    14 年前

    在伪代码中,

    variable = (condition) ? statement1 : statement2
    

    地图到

    if (condition is true)
    then
    variable = statement1
    else
    variable = statement2
    end if