【问题标题】:How to use continue keyword in a ternary operator in php如何在 php 的三元运算符中使用 continue 关键字
【发布时间】:2014-05-07 06:15:57
【问题描述】:

我想在三元运算符中使用 continue 关键字来简化代码。我正在尝试以下方式并发现语法错误。

     in_array($SqlPackageCategoryProductResultRowObj->product_id, $individualProduct)?continue:"";

我该如何使用它。

【问题讨论】:

  • 我也很确定这段代码对于三元运算符非常不可读,我强烈建议使用 if 语句。
  • 循环使用。如果 in_array() 为真,那么我不想在循环中执行其余代码
  • 这真的简化了代码吗? if 不是更合适,更容易一目了然,即使可以像这样调用continue 吗?
  • 无论代码是否简化,这个问题即使在其他情况下也是相关且有趣的——点赞

标签: php


【解决方案1】:

ternary operator 采用(expr1) ? (expr2) : (expr3) 形式的 3 个expressions

continuecontrol structure 语句,而不是表达式。因此,它不能是三元运算符的操作数。事实上,据我所知,PHP 的所有运算符都不接受控制结构作为操作数。这同样适用于其他广泛的 C 系列语言。

为了便于阅读,在您的情况下使用if 语句可能会更好。

【讨论】:

    【解决方案2】:

    您不能为此使用三元运算符。这是解决方案:

    if (in_array($SqlPackageCategoryProductResultRowObj->product_id, $individualProduct)) 
        continue;
    

    【讨论】:

      【解决方案3】:

      这已经很老了,但我在寻找类似的功能时遇到了这个。如果值存在,我需要为变量赋值,如果不存在,则继续循环。我是这样实现的:

      $var = isset($value) ? $value : NULL;
      
      if(is_null($var)) continue;
      

      虽然这很可能不是最佳实践,但如果您希望在第一个操作中使用三元,您可以设置为 NULL,然后检查以继续。

      【讨论】:

        猜你喜欢
        • 2014-12-19
        • 1970-01-01
        • 2017-07-06
        • 2012-12-19
        • 1970-01-01
        • 2016-03-08
        • 2018-02-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多