【问题标题】:One liner if - use condition in string [duplicate]一个衬里 if - 在字符串中使用条件 [重复]
【发布时间】:2018-01-25 11:15:21
【问题描述】:

有没有办法在字符串中使用条件?

$x = 'hello';
$y = 'mister'; // is nullable
$z = 'panda';

$msg = $x . ' ' . {($y == 'mister') ? 'dear ' : ' ' } . $z

// Output: hello dear panda

【问题讨论】:

  • 问题是什么?
  • 你做对了,你所要做的就是用括号交换大括号。
  • {} 替换为()
  • 或完全省略它们
  • @GergelyLukacsy, {} 应替换为 (),如果删除它将返回 panda 作为输出

标签: php


【解决方案1】:

对于三元运算符,我们不使用{ } 括号,而是必须使用( )

替换你的代码

$msg = $x . ' ' . {($y == 'mister') ? 'dear ' : ' ' } . $z

$msg = $x . ' ' . (($y == 'mister') ? 'dear ' : ' ' ) . $z

【讨论】:

    【解决方案2】:

    您应该将{} 替换为()。此外,不需要$y=='mister' 周围的()。您应该尽量将它们保持在(可读的)最低限度。

    $msg = $x . ' ' . ($y == 'mister' ? 'dear ' : ' ' ) . $z;
    

    【讨论】:

      【解决方案3】:

      {} 替换为() 即可:

      $x = 'hello';
      $y = 'mister'; // is nullable
      $z = 'panda';
      $msg = $x . ' ' . (($y == 'mister') ? 'dear ' : ' ' ) . $z;
      echo $msg;
      

      【讨论】:

      • 奇怪,你的答案是正确的,所以你为什么投反对票
      • @JigarShah 我们永远不会知道)
      【解决方案4】:

      如果我很好地理解了您的问题,您不打算找出是否可以在字符串中使用条件,但您想为字符串赋值。要分配的值取决于条件,可以这样写

      $x = 'hello';
      $y = 'mister'; // is nullable
      $z = 'panda';
      
      $msg = $x . ' ';
      if ($y == 'mister') {
          $msg .= $x . 'dear ';
      }
      $msg .= $z;
      
      // Output: hello dear panda
      

      但是,这有点长,您打算使用 ?操作员。错误是您使用了大括号 {}。这是修复:

      $x = 'hello';
      $y = 'mister'; // is nullable
      $z = 'panda';
      
      $msg = $x . ' ' . (($y == 'mister') ? 'dear ' : ' ' ) . $z;
      
      // Output: hello dear panda
      

      【讨论】:

        猜你喜欢
        • 2013-07-30
        • 1970-01-01
        • 2014-04-12
        • 2015-12-27
        • 1970-01-01
        • 1970-01-01
        • 2021-01-13
        • 2012-05-09
        • 1970-01-01
        相关资源
        最近更新 更多