使用三元运算符处理多个语句

时间:2018-11-03 15:36:26

标签: php php-5.5 php-5.4

我尝试过

         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'} =='')为true,则需要完成两个声明。

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

该问题与解析错误无关。问题是,如果BayId不包含任何内容,则应该可以使用$ obj-> {'IsDeleted'} =“ No”覆盖数组元素;否则它什么都不做

我也尝试过

$ obj-> {'BayId'} =($ obj-> {'BayId'} =='')吗? $ obj-> {'IsDeleted'} =“否”;

它不起作用

2 个答案:

答案 0 :(得分:0)

当我这样组织代码时,也许您会发现问题所在:

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

我向您保证,这是完全相同的代码...那么? :)

答案 1 :(得分:0)

如果使用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:'';

备注:我使用了一个类比,因为我并不真正了解您的对象,但是无论您要实现什么目的,原理都是相同的...