【问题标题】:Handling multiple statements using ternary operators使用三元运算符处理多个语句
【发布时间】:2018-11-03 15:36:25
【问题描述】:

我试过了

         foreach ($this->Bay as $k => $obj) {
        $obj->{'BayId'} = ($obj->{'BayId'}=='') ? new MongoDB\BSON\ObjectID(); $obj->{'IsDeleted'} = "No"; : new MongoDB\BSON\ObjectID($obj->{'BayId'});

    }

如果此条件 ($obj->{'BayId'}=='') 为真,则需要完成两个声明。

上面的代码抛出错误...请帮助!!!

问题与解析错误无关。问题是,如果 BayId 不包含任何内容,它应该能够用 $obj->{'IsDeleted'} = "No"; 覆盖数组元素。否则它不应该做任何事情

我也试过这样

$obj->{'BayId'} = ($obj->{'BayId'}=='') ? $obj->{'IsDeleted'} = "否";

没用

【问题讨论】:

标签: php php-5.5 php-5.4


【解决方案1】:

当我这样组织您的代码时,您可能会发现问题所在:

foreach ($this->Bay as $k => $obj) {
    $obj->{'BayId'} = ($obj->{'BayId'}=='') ? new MongoDB\BSON\ObjectID();
    $obj->{'IsDeleted'} = "No";
    : new MongoDB\BSON\ObjectID($obj->{'BayId'});
}

我向你保证,它是完全相同的代码......所以? :)

【讨论】:

    【解决方案2】:

    如果你使用 if 语句,你试图达到的目的会更易读和理解。但是你可以像这样继续:

    假设$x=null && $y=null 然后根据条件您希望使用三元运算符更改两个变量值,您可以简单地做

    (your condition here)?$x="new value"&&$y="new value too":"";
    

    示例:

    $x=$y=null;
    ($_GET['age']>10)?$x=10&&$y=12:'';
    

    备注:我打个比方,因为我并不真正了解你的对象,但无论你想要达到什么目的,原理都是一样的......

    【讨论】:

      猜你喜欢
      • 2022-01-10
      • 2019-12-30
      • 1970-01-01
      • 1970-01-01
      • 2013-02-13
      • 1970-01-01
      • 1970-01-01
      • 2018-09-27
      相关资源
      最近更新 更多