【问题标题】:How to Convert this to a ternary operator如何将其转换为三元运算符
【发布时间】:2015-02-07 00:43:34
【问题描述】:

我想将此代码转换为三元运算符:

if (isset($a)) {
    $arr[$k] += $c;
}
else {
    $arr[$k] = $c;
}

如果是单个运算符,我可以做到,但是 ifelse 中的运算符不同。

怎么做?

【问题讨论】:

    标签: php if-statement ternary-operator


    【解决方案1】:

    可能的转换算法与您的情况(如学校代数)

    1. 直接转换。

      isset($a) ? ($arr[$k] += $c) : ($arr[$k] = $c);

    2. 分解 +=

      isset($a) ? ($arr[$k] = $arr[$k] + $c) : ($arr[$k] = $c);

    3. 将分配向左移动

      $arr[$k] = isset($a) ? ($arr[$k] + $c) : ($c);

    4. 移动 $c

      $arr[$k] = (isset($a) ? $arr[$k] : 0) + $c;

    没有三元的变体(作为奖励)。

    $arr[$k] = $c + isset($a) * $arr[$k];
    

    【讨论】:

    • 我认为使用三元运算符进行流控制(即执行哪个语句)是不好的形式;更好的样式将它们限制在您使用它们选择一个或其他值并将其用作返回值的位置。在需要流量控制的地方, if(){} 更具可读性。但这是风格和可读性的问题。
    【解决方案2】:

    不就是这样吗:

    $arr[$k] = isset(a$) ? ($arr[$k]+$c) : $c
    

    或等效:

    $arr[$k] = $c + (isset($a) ? $arr[$k] : 0)
    

    【讨论】:

    • nvm,不知为何,我以为他在处理字符串。
    猜你喜欢
    • 1970-01-01
    • 2021-02-22
    • 1970-01-01
    • 2018-10-25
    • 2021-03-17
    • 2017-08-26
    • 1970-01-01
    • 2021-11-27
    • 2012-07-11
    相关资源
    最近更新 更多