【问题标题】:corresponding nested ternary operator in php? [duplicate]php中对应的嵌套三元运算符? [复制]
【发布时间】:2013-01-21 15:15:39
【问题描述】:

我想将以下if else condition 转换为nested ternary 运算符。

if ($projectURL) {
    echo $projectURL;
} elseif ($project['project_url']) {
    echo $project['project_url'];
} else {
    echo $project['project_id'];
}

我写的如下。

echo ($projectURL)?$projectURL:($project['project_url'])?$project['project_url']: $project['project_id'];

但是发现不能正常工作。这不是正确的方法吗?

【问题讨论】:

  • 不要那样做。三元运算符很容易变成不可读的混乱。嵌套的更是如此。为此坚持使用 if/else。它使代码更易于维护。
  • 如果您不介意,请重新标记问题..
  • 我在文本框值中使用了嵌套三元运算符。感觉很难维护“if else 嵌套循环”。
  • @MuhammedShihabudheen — 这通常意味着你应该让它成为一个可以调用它的函数。
  • @Quentin :我在整个项目中只使用了一次代码。为此目的创建函数是否是好方法?如果是,那么我应该在哪里创建函数?在帮助程序中还是查看文件本身?

标签: php if-statement ternary-operator


【解决方案1】:

截至php 7,我们可以使用Null coalescing operator

echo $projectURL ?? $project['project_url'] ?? $project['project_id'];

【讨论】:

    【解决方案2】:

    三元运算符在 PHP 中很棘手,因为它们是左关联的(与所有其他语言不同,它是右关联的)。在这种情况下,您需要使用括号来告诉 PHP 您到底想要什么:

    echo ($projectURL ? $projectURL : ($project['project_url'] ? $project['project_url'] : $project['project_id']));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-07
      • 2011-10-29
      • 1970-01-01
      • 2012-02-02
      • 2013-11-07
      相关资源
      最近更新 更多