簡體   English   中英

使用三元運算符處理多個語句

[英]Handling multiple statements using ternary operators

我試過像

         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'} = "否";

這是行不通的

當我像這樣組織你的代碼時,也許你會發現有什么問題:

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

我向你保證,這是完全相同的代碼......所以? :)

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

備注:我使用一些類比,因為我並不真正了解您的對象,但無論您要達到什么目的,原理都是一樣的......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM