【问题标题】:Chaining ternary operator in PHPPHP中的链接三元运算符
【发布时间】:2016-08-21 16:26:38
【问题描述】:

我有很多这样的遗留代码:

return isset($a) ? $a : isset($b) ? $b : isset($c) ? $c : isset($d) ? $d : isset($e) ? $e : '';

所以它只是链式三元运算符。 它可以工作,但大多数变量名不是 $a,而是 $veryLongAndDescriptiveCorporateVariableNames,它对我来说是不可读的。

有没有更好的方法来重构它?我试过这样的东西,但我不知道这是否是最好和最易读的方式:

    $ar = array(
        $a,
        $b,
        $c,
        $d,
        $e
    );

    foreach ($ar as $k => $v)
        if (isset($v)) 
            return $v;
    return '';

【问题讨论】:

  • 我看不出有任何理由检查 X 变量然后使用第一个现有变量。对我来说,这似乎是一个糟糕的编码脚本。

标签: php formatting refactoring


【解决方案1】:

缩进是你的朋友...

return isset($a)
  ? $a
  : isset($b)
    ? $b
    : isset($c)
      ? $c
      : isset($d)
        ? $d
        : isset($e)
          ? $e
          : '';

【讨论】:

    【解决方案2】:

    一切正常:-

    $ar = array(
            $a,
            $b,
            $c,
            $d,
            $e
        );
    
        foreach ($ar as $k => $v)
        {
            echo (isset($v)) ? $v : '';
        }
    

    【讨论】:

      猜你喜欢
      • 2016-01-15
      • 1970-01-01
      • 2015-07-31
      • 2020-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-19
      • 2016-07-18
      相关资源
      最近更新 更多